5

我正在阅读这篇文章,但我无法弄清楚下面的行是做什么的。即使我删除这条线,我也看不出任何区别。

this.constructor.prototype.constructor.apply(this,Array.prototype.slice.call(arguments));

有人可以解释一下为什么this.constructor.prototype.constructor有必要,不会this.constructor返回相同的值吗?

4

1 回答 1

5

基本上,它试图做的是为作为当前对象原型的对象调用构造函数。

分解它:

  • this- 当前对象
  • this.constructor-constructor当前对象的属性,几乎可以肯定(但不一定!)从其原型继承。所以它可能(但不一定)是创建对象的函数。
  • this.constructor.prototype- 分配给该函数prototype属性的对象。(如果您通过调用该函数,该对象将被分配为创建的对象的底层原型new。)
  • this.constructor.prototype.constructor- 创建对象的函数。

...然后我们在对 current 的调用中调用apply它来设置,并使用将当前参数的副本作为真正的数组。(最后一部分是不必要的,接受任何类似数组的东西,它不需要真正的数组。所以代码可以直接使用。)thisthisArray.prototype.sliceapplyarguments

于 2013-06-15T15:45:08.403 回答