我正在阅读这篇文章,但我无法弄清楚下面的行是做什么的。即使我删除这条线,我也看不出任何区别。
this.constructor.prototype.constructor.apply(this,Array.prototype.slice.call(arguments));
有人可以解释一下为什么this.constructor.prototype.constructor
有必要,不会this.constructor
返回相同的值吗?
我正在阅读这篇文章,但我无法弄清楚下面的行是做什么的。即使我删除这条线,我也看不出任何区别。
this.constructor.prototype.constructor.apply(this,Array.prototype.slice.call(arguments));
有人可以解释一下为什么this.constructor.prototype.constructor
有必要,不会this.constructor
返回相同的值吗?
基本上,它试图做的是为作为当前对象原型的对象调用构造函数。
分解它:
this
- 当前对象this.constructor
-constructor
当前对象的属性,几乎可以肯定(但不一定!)从其原型继承。所以它可能(但不一定)是创建对象的函数。this.constructor.prototype
- 分配给该函数prototype
属性的对象。(如果您通过调用该函数,该对象将被分配为创建的对象的底层原型new
。)this.constructor.prototype.constructor
- 创建该对象的函数。...然后我们在对 current 的调用中调用apply
它来设置,并使用将当前参数的副本作为真正的数组。(最后一部分是不必要的,接受任何类似数组的东西,它不需要真正的数组。所以代码可以直接使用。)this
this
Array.prototype.slice
apply
arguments