继承的子对象在JavaScript中共享相同的数组属性?
鉴于上述情况,我希望继承的子对象在JavaScript中共享相同的数组属性?,javascript,inheritance,Javascript,Inheritance,鉴于上述情况,我希望child2.arr为空,因为它是自己的对象。如何让child1和child2包含自己的arr?谢谢 您必须在构造函数中进行赋值: > function Parent() {this.arr = [];} undefined > function Child() {} undefined > Child.prototype = new Parent(); { arr: [] } > child1 = new Child(); {} > child
child2.arr
为空,因为它是自己的对象。如何让child1和child2包含自己的arr?谢谢 您必须在构造函数中进行赋值:
> function Parent() {this.arr = [];}
undefined
> function Child() {}
undefined
> Child.prototype = new Parent();
{ arr: [] }
> child1 = new Child();
{}
> child2 = new Child();
{}
> child1.arr.push('From child1');
1
> child2.arr
[ 'From child1' ]
>
这将为每个子级提供原型的.arr
数组(如果存在)的副本。(这只是一个简单的副本,这只是一个可能的示例。)对象属性的指定始终涉及目标对象的本地(“自有”)属性,但引用涉及原型链
也不是因为相当神秘的原因,初始化这样的原型不是一个好主意。最好使用对象。创建:
function Child() {
this.arr = this.arr ? this.arr.slice(0) : [];
}
这将为您提供一个新对象,该对象使用父对象
原型对象作为其原型
您必须在构造函数中进行赋值:
> function Parent() {this.arr = [];}
undefined
> function Child() {}
undefined
> Child.prototype = new Parent();
{ arr: [] }
> child1 = new Child();
{}
> child2 = new Child();
{}
> child1.arr.push('From child1');
1
> child2.arr
[ 'From child1' ]
>
这将为每个子级提供原型的.arr
数组(如果存在)的副本。(这只是一个简单的副本,这只是一个可能的示例。)对象属性的指定始终涉及目标对象的本地(“自有”)属性,但引用涉及原型链
也不是因为相当神秘的原因,初始化这样的原型不是一个好主意。最好使用对象。创建:
function Child() {
this.arr = this.arr ? this.arr.slice(0) : [];
}
这将为您提供一个新对象,该对象使用父对象
原型对象作为其原型
您必须在构造函数中进行赋值:
> function Parent() {this.arr = [];}
undefined
> function Child() {}
undefined
> Child.prototype = new Parent();
{ arr: [] }
> child1 = new Child();
{}
> child2 = new Child();
{}
> child1.arr.push('From child1');
1
> child2.arr
[ 'From child1' ]
>
这将为每个子级提供原型的.arr
数组(如果存在)的副本。(这只是一个简单的副本,这只是一个可能的示例。)对象属性的指定始终涉及目标对象的本地(“自有”)属性,但引用涉及原型链
也不是因为相当神秘的原因,初始化这样的原型不是一个好主意。最好使用对象。创建:
function Child() {
this.arr = this.arr ? this.arr.slice(0) : [];
}
这将为您提供一个新对象,该对象使用父对象
原型对象作为其原型
您必须在构造函数中进行赋值:
> function Parent() {this.arr = [];}
undefined
> function Child() {}
undefined
> Child.prototype = new Parent();
{ arr: [] }
> child1 = new Child();
{}
> child2 = new Child();
{}
> child1.arr.push('From child1');
1
> child2.arr
[ 'From child1' ]
>
这将为每个子级提供原型的.arr
数组(如果存在)的副本。(这只是一个简单的副本,这只是一个可能的示例。)对象属性的指定始终涉及目标对象的本地(“自有”)属性,但引用涉及原型链
也不是因为相当神秘的原因,初始化这样的原型不是一个好主意。最好使用对象。创建:
function Child() {
this.arr = this.arr ? this.arr.slice(0) : [];
}
这将为您提供一个新对象,该对象使用父对象
原型对象作为其原型
调查
基本上,如果属性不在您要查看的对象上,javascript会查看它的原型并尝试在那里找到它,直到它到达对象
您的子对象没有属性arr
,但它的原型新父对象()
有属性,并且该原型是从Child1
和Child2
中引用的
基本上,如果属性不在您要查看的对象上,javascript会查看它的原型并尝试在那里找到它,直到它到达对象
您的子对象没有属性arr
,但它的原型新父对象()
有属性,并且该原型是从Child1
和Child2
中引用的
基本上,如果属性不在您要查看的对象上,javascript会查看它的原型并尝试在那里找到它,直到它到达对象
您的子对象没有属性arr
,但它的原型新父对象()
有属性,并且该原型是从Child1
和Child2
中引用的
基本上,如果属性不在您要查看的对象上,javascript会查看它的原型并尝试在那里找到它,直到它到达对象
您的Child
没有属性arr
,但它的原型new Parent()
有属性,并且该属性是从Child1
和Child2
中引用的,在子构造函数中添加赋值非常有效!谢谢在子构造函数中添加赋值非常有效!谢谢在子构造函数中添加赋值非常有效!谢谢在子构造函数中添加赋值非常有效!谢谢