JavaScript-使用B.prototype=new A()继承数组
JavaScript - inheriting arrays with B.prototype=new A()
(我是JavaScript新手)。以下代码:
function A() {
console.log('Constructing A');
this.a = new Array();
}
function B(x) {
console.log('Constructing B');
this.a.push(x);
this.b = x;
}
B.prototype = new A();
b1 = new B(10);
b2 = new B(11);
console.log('b1', b1);
console.log('b2', b2);
导致b1和b2共享单个this
.a数组(但不同的this.b
)。这就像一个肤浅的复制品。
我不太明白创建单独this.a
阵列的正确方法是什么。我希望它们被继承,因为这是代码的逻辑,而且我不想在每个子对象中创建它们(在我的例子中有很多子对象)。
我对这个问题的解释很感兴趣。我读过@Niko的重复问题,但似乎这就是区别:
function A() {
console.log('Constructing A');
this.a=new Array();
}
function B(x) {
console.log('Constructing B');
A.call(this); //--> calling the super() constructor creates a new array
this.a.push(x);
}
B.prototype = new A();
b1 = new B(11);
b2 = new B(12);
console.log(b1.a);
console.log(b2.a);
在您的代码中:
> function A() {
> console.log('Constructing A');
> this.a = new Array();
> }
>
> function B(x) {
> console.log('Constructing B');
> this.a.push(x);
> this.b = x;
> }
>
> B.prototype = new A();
这将B的原型设置为A的实例。因此,B的所有实例都将在其[[Prototype]]
链上具有A的实例。
在B构造函数中,this
引用了一个从B.prototype继承的新对象,因此this.a
将引用B.prototype
的a
属性。
> b1 = new B(10);
所以现在B.prototype.a
就是[10]
。
> b2 = new B(11);
现在CCD_ 11是CCD_。
相关文章:
- 如何在映射数组中添加换行符
- 为什么不't htmlCollection从数组继承
- JavaScript-使用B.prototype=new A()继承数组
- 向扩展数组的JS集合添加对象(继承?)
- 具有函数继承的对象扩展数组
- JavaScript:将继承的类添加到数组中不起作用
- 覆盖原型继承中的数组
- CoffeeScript类-循环遍历继承对象的数组
- 从数组中的对象继承/调用函数
- 如何强制javascript数组从我的自定义对象继承
- Javascript继承:父's数组变量保留值
- 为什么这种javascript继承会导致引用共享数组
- 从Node.js中的EventEmitter继承的原型数组
- 使用Javascript prototype继承在数组中存储数据
- 当实例存储在数组中时,原型继承不起作用
- 关于在javascript中继承数组对象的属性
- Javascript:使对象继承数组方法
- 如何使用继承的方法更改继承的数组
- 在Javascript原型继承中,数组和数字数据类型之间有区别吗
- 继承的子对象在JavaScript中共享相同的数组属性