this.constructor.prototype.constructor.apply在js中是什么意思?



我正在阅读这篇文章,我不明白下面这行是做什么的。即使我去掉这一行,我也看不出有什么区别。

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 -创建对象的函数。

…然后我们调用apply,将this设置为当前的this,并使用Array.prototype.slice将当前参数复制为真数组。(最后一部分是不必要的,apply接受任何数组,如,它不需要真正的数组。所以代码可以直接使用arguments)

最新更新