继承的子对象在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
中引用的,在子构造函数中添加赋值非常有效!谢谢在子构造函数中添加赋值非常有效!谢谢在子构造函数中添加赋值非常有效!谢谢在子构造函数中添加赋值非常有效!谢谢