From 01b0e12ba27b5069248fd09235e9a7143915ee30 Mon Sep 17 00:00:00 2001 From: Irvin Date: Wed, 16 Feb 2022 02:02:49 +0800 Subject: remove `notranslate` class in zh-CN --- files/zh-cn/web/javascript/guide/meta_programming/index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'files/zh-cn/web/javascript/guide/meta_programming') diff --git a/files/zh-cn/web/javascript/guide/meta_programming/index.html b/files/zh-cn/web/javascript/guide/meta_programming/index.html index 723165c93f..65747f4058 100644 --- a/files/zh-cn/web/javascript/guide/meta_programming/index.html +++ b/files/zh-cn/web/javascript/guide/meta_programming/index.html @@ -16,7 +16,7 @@ translation_of: Web/JavaScript/Guide/Meta_programming

在 ECMAScript 6 中引入的 {{jsxref("Proxy")}} 对象可以拦截某些操作并实现自定义行为。例如获取一个对象上的属性:

-
let handler = {
+
let handler = {
   get: function(target, name){
     return name in target ? target[name] : 42;
 }};
@@ -204,7 +204,7 @@ console.log(p.a, p.b); // 1, 42
 
 

{{jsxref("Proxy.revocable()")}} 方法被用来创建可撤销的 Proxy 对象。这意味着 proxy 可以通过 revoke 函数来撤销,并且关闭代理。此后,代理上的任意的操作都会导致{{jsxref("TypeError")}}。

-
var revocable = Proxy.revocable({}, {
+
var revocable = Proxy.revocable({}, {
   get: function(target, name) {
     return "[[" + name + "]]";
   }
@@ -227,18 +227,18 @@ typeof proxy            // "object", typeof doesn't trigger any trap

以 {{jsxref("Reflect.has()")}} 为例,你可以将 in 运算符作为函数:

-
Reflect.has(Object, "assign"); // true
+
Reflect.has(Object, "assign"); // true
 

更好的 apply 函数

在 ES5 中,我们通常使用 {{jsxref("Function.prototype.apply()")}} 方法调用一个具有给定 this 值和 arguments 数组(或类数组对象)的函数。

-
Function.prototype.apply.call(Math.floor, undefined, [1.75]);
+
Function.prototype.apply.call(Math.floor, undefined, [1.75]);

使用 {{jsxref("Reflect.apply")}},这变得不那么冗长和容易理解:

-
Reflect.apply(Math.floor, undefined, [1.75]);
+
Reflect.apply(Math.floor, undefined, [1.75]);
 // 1;
 
 Reflect.apply(String.fromCharCode, undefined, [104, 101, 108, 108, 111]);
@@ -254,7 +254,7 @@ Reflect.apply(''.charAt, 'ponies', [3]);
 
 

使用 {{jsxref("Object.defineProperty")}},如果成功返回一个对象,否则抛出一个 {{jsxref("TypeError")}},你将使用 {{jsxref("Statements/try...catch","try...catch")}} 块来捕获定义属性时发生的任何错误。因为 {{jsxref("Reflect.defineProperty")}} 返回一个布尔值表示的成功状态,你可以在这里使用 {{jsxref("Statements/if...else","if...else")}} 块:

-
if (Reflect.defineProperty(target, property, attributes)) {
+
if (Reflect.defineProperty(target, property, attributes)) {
   // success
 } else {
   // failure
-- 
cgit v1.2.3-54-g00ecf