文章导航

Reflect.construct() 方法

2019-5-11 10:51| 作者: admin| 查看: 581| 评论: 0|来自: 蚂蚁部落

关于Proxy更多内容可以参阅JavaScript Proxy和Reflect一章节。

此方法行为有点像new操作符 构造函数,相当于运行new target(...args)。

语法结构:

[JavaScript] 纯文本查看 复制代码
Reflect.construct(target, argumentsList[, newTarget])

参数解析:

(1).target:运行的构造函数。

(2).argumentsList:数组或者伪数组,存储了给构造函数传递的参数。

(3).newTarget:可选,被用作构造函数。

特别说明:如果target或者newTarget不是构造函数就会报错。

代码实例:

[JavaScript] 纯文本查看 复制代码运行代码
var date = Reflect.construct(Date, [2016, 5, 27]);
console.log(date instanceof Date);
console.log(date.getFullYear());

Date()被以构造函数的方式调用,参数是数组[2016, 5, 27]中的元素。

[JavaScript] 纯文本查看 复制代码运行代码
let target = function (webName, url) {
  this.webName = webName;
  this.url = url;
}
target.prototype.a = 1;
let newTarget = function () {
  this.age = 4;
}
newTarget.prototype.b = 2;
let otarget = Reflect.construct(target, ["蚂蚁部落", "www.softwhy.com"], newTarget);
console.log(otarget.webName)
console.log(otarget.age)
console.log(otarget.a)
console.log(otarget.b)

newTarget会被用作构造函数,但是有一些细节需要注意:

(1).实例otarget具有target构造函数中的属性,但是不具有target原型对象上的属性。

(2).实例otarget不具有newTarget构造函数中的属性,但是具有newTarget原型对象上的属性。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部