Dav*_*ing 4 javascript oop constructor
我试图掌握javascript构造函数,如果它们真的是只读的.这是一个简单的测试场景:
var A = function(){}
console.log( A.prototype.constructor == A ); //true
Run Code Online (Sandbox Code Playgroud)
所以在这一点上,每个新函数都会收到一个原型对象,其中包含构造函数作为参考.这一切都很好.现在考虑一下:
var B = function() {
this.id = 0;
}
A.prototype.constructor = B; // what does this do with A?
Run Code Online (Sandbox Code Playgroud)
所以现在,A的每个实例都应该得到B作为构造函数:
var C = new A();
console.log(C.constructor == B) // true
Run Code Online (Sandbox Code Playgroud)
最后,这对每个实例都有实际影响吗?它似乎不是这样的:
console.log(C.id); // what will this yield?
Run Code Online (Sandbox Code Playgroud)
我的问题是:暴露构造函数引用的目的是什么?显然你可以设置/覆盖它,但除了更改引用之外它什么都不做.或者我错过了什么?
该constructor属性只是为了方便,它对程序的行为完全没有影响.默认情况下,当您定义一个函数时,它func.prototype.constructor被设置为func自身 - 您可以将它设置为您想要的任何内容,它没有任何区别.构造的对象完全取决于您传递给的函数new:如果这样做new A(),它将始终调用函数A.