为什么第二个选项不起作用?父属性是否可能在原型中?
a.call(this)
因为这个原因是不合适的。
function A() {
this.one = 1;
}
function B() {
this.two = 2;
}
B.prototype = new A();
x = new B();
console.log(x);
function a() {
this.one = 1;
}
function b() {
this.constructor.prototype = new a();
this.two = 2;
}
z = new b();
console.log(z);
console.log(new b());
“不起作用”,因为在构造函数内部已经创建了对象并且已经分配了它的原型。
由于整个原型对象发生了变化,这不会以任何方式影响已经创建的对象。
相反,您可以将所有属性从对象
new a()
转移到原型本身,如下所示:但是,每次创建对象时更新所有已创建对象的原型可能不是一个好主意。