我正在阅读this文章,我无法弄清楚下面这行是做什么的。即使我删除了这一行,我也看不出任何差异。
this.constructor.prototype.constructor.apply(this,Array.prototype.slice.call(arguments));
有人可以解释为什么this.constructor.prototype.constructor
是必要的,不会this.constructor
返回相同的值吗?
答案 0 :(得分:5)
基本上,它要做的是为当前对象原型的对象调用构造函数。
打破它:
this
- 当前对象this.constructor
- 当前对象上的constructor
属性,几乎可以肯定(但不一定!)继承自其原型。因此,它可能(但不一定)是创建对象的函数。this.constructor.prototype
- 分配给该函数的prototype
属性的对象。 (如果通过new
调用该函数,将被指定为对象的基础原型的对象。)this.constructor.prototype.constructor
- 创建 对象的函数。 ...然后我们在其上调用apply
以在当前this
的调用中设置this
,并使用Array.prototype.slice
制作当前的arguments
副本参数作为真正的数组。 (最后一部分是不必要的,apply
接受任何 array-like ,它不需要真正的数组。所以代码可以直接使用{{1}}。)