From 310fd066e91f454b990372ffa30e803cc8120975 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 12:56:40 +0100 Subject: unslug zh-cn: move --- .../proxy/handler/construct/index.html | 130 --------------------- 1 file changed, 130 deletions(-) delete mode 100644 files/zh-cn/web/javascript/reference/global_objects/proxy/handler/construct/index.html (limited to 'files/zh-cn/web/javascript/reference/global_objects/proxy/handler/construct') diff --git a/files/zh-cn/web/javascript/reference/global_objects/proxy/handler/construct/index.html b/files/zh-cn/web/javascript/reference/global_objects/proxy/handler/construct/index.html deleted file mode 100644 index 209e9752e3..0000000000 --- a/files/zh-cn/web/javascript/reference/global_objects/proxy/handler/construct/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: handler.construct() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/construct -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/construct ---- -
{{JSRef}}
- -

handler.construct() 方法用于拦截{{jsxref("Operators/new", "new")}} 操作符. 为了使new操作符在生成的Proxy对象上生效,用于初始化代理的目标对象自身必须具有[[Construct]]内部方法(即 new target 必须是有效的)。

- -

{{EmbedInteractiveExample("pages/js/proxyhandler-construct.html", "taller")}}

- -

语法

- -
var p = new Proxy(target, {
-  construct: function(target, argumentsList, newTarget) {
-  }
-});
-
- -

参数

- -

下面的参数将会传递给construct方法,this绑定在handler上。

- -
-
target
-
目标对象。
-
argumentsList
-
constructor的参数列表。
-
newTarget
-
最初被调用的构造函数,就上面的例子而言是p。
-
- -

返回值

- -

construct 方法必须返回一个对象。

- -

描述

- -

handler.construct() 方法用于拦截 {{jsxref("Operators/new", "new")}}操作符。

- -

拦截

- -

该拦截器可以拦截以下操作:

- - - -

约束

- -

如果违反以下约定,代理将会抛出错误 {{jsxref("TypeError")}}:

- - - -

示例

- -

下面代码演示如何拦截 {{jsxref("Operators/new", "new")}} 操作。

- -
var p = new Proxy(function() {}, {
-  construct: function(target, argumentsList, newTarget) {
-    console.log('called: ' + argumentsList.join(', '));
-    return { value: argumentsList[0] * 10 };
-  }
-});
-
-console.log(new p(1).value); // "called: 1"
-                             // 10
-
- -

下面的代码违反了约定.

- -
var p = new Proxy(function() {}, {
-  construct: function(target, argumentsList, newTarget) {
-    return 1;
-  }
-});
-
-new p(); // TypeError is thrown
-
- -

下面的代码未能正确的初始化Proxy。Proxy初始化时,传给它的target 必须具有一个有效的constructor供new操作符调用。

- -
var p = new Proxy({}, {
-  construct: function(target, argumentsList, newTarget) {
-    return {};
-  }
-});
-
-new p(); // TypeError is thrown, "p" is not a constructor
-
- -

规范

- - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget', '[[Construct]]')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget', '[[Construct]]')}}{{Spec2('ESDraft')}} 
- -

浏览器兼容性

- -
{{Compat("javascript.builtins.Proxy.handler.construct")}}
- -
 
- -

相关主题

- - -- cgit v1.2.3-54-g00ecf