function A(){
// sort of like this
// this.arr = [];
}
function B(){
// not here though
// this.arr = [];
}
B.prototype = new A(); // all B instances would share this prototypes attributes
// I want all B instances to have an arr attributes (array)
// of their own but I want the parent class to define it
var b1 = new B();
var b2 = new B();
b1.arr.push(1);
b2.arr.push(2);
b1.arr.length === 1; // should be true
b2.arr.length === 1; // should be true
我希望在A
中编写代码,为子类arr
的每个实例定义一个B
变量,使arr
成为每个B
的新对象。 1}}实例。我可以通过在this.arr = []
构造函数中设置B
来实现这一点,但这可以通过编写到A
上的代码来实现吗?
答案 0 :(得分:2)
您在Javascript中继承的想法存在很大问题。在javascript中,你真的有对象,这就是它。构造函数是使用new
调用并创建新对象的方法。
这部分代码并非right
,因为您正在使用从A创建的对象创建原型...那就是说,您并未真正使用原型{ {1}}。由于每个人的继承并不存在,因此您必须实现一些能够调用创建对象A
所需的每个构造函数的东西。
B
您应该使用此方法:
B.prototype = new A();
在这种情况下,你将在B中拥有A的所有原型......但如果有必要,你仍然必须调用B.prototype = Object.create(A.prototype)
的构造函数。
A
使用更复杂的库,最终可能会在python中继承类似于function A() {
this.arr = []
}
function B() {
A.call(this)
}
的继承。如果您真的参与其中,您还可以创建一个自动调用每个子原型的每个构造函数的结构。
答案 1 :(得分:0)
答案 2 :(得分:0)
我能想到的一种方法是:
function A(){
this.arr = [];
}
function B(){
A.call(this);
}