Javascript对象属性继承

Javascript对象属性继承,javascript,javascript-objects,Javascript,Javascript Objects,我的方法的目标是继承属性名“c”并将其附加到obj1。不确定我在这里遗漏了什么,我的冰毒继承了名字“key2”,而不是“c” var obj1={ 答:1,, b:2 }; 变量obj2={ b:4, c:3 }; 功能扩展(obj1、obj2){ 输出={}; 用于(obj1中的var键){ 用于(obj2中的var键2){ 如果(键!==键2){ obj1.key2=obj2[key2]; } } } 返回obj1; } 扩展(obj1,obj2)当您编写obj1.key2时,您正在设置一

我的方法的目标是继承属性名“c”并将其附加到obj1。不确定我在这里遗漏了什么,我的冰毒继承了名字“key2”,而不是“c”

var obj1={
答:1,,
b:2
};
变量obj2={
b:4,
c:3
};
功能扩展(obj1、obj2){
输出={};
用于(obj1中的var键){
用于(obj2中的var键2){
如果(键!==键2){
obj1.key2=obj2[key2];
}
}
}
返回obj1;
}

扩展(obj1,obj2)
当您编写
obj1.key2
时,您正在设置一个名为
key2
的属性

这就是JS属性速记符号的工作原理

您需要
obj1[key2]


您还将返回
obj1
;不确定
输出
用于什么。

当您编写
obj1.key2
时,您正在设置一个名为
key2
的属性

这就是JS属性速记符号的工作原理

您需要
obj1[key2]


您还将返回
obj1
;不确定
输出
的用途。

您正在硬编码属性名
key2
。它需要像
obj1[key2]
那样分配。Javascript允许您动态添加属性,属性名称也可以在运行时确定。因此,
Obj1[key2]
创建动态属性

另外,请注意,由于您使用的是操作符中的
,并且没有使用
Object.hasOwnProperty()
方法对属性进行额外检查。对于带有原型链的对象,您可能会得到不同的结果,而这些结果有时可能并不理想

var obj1={
答:1,,
b:2
};
变量obj2={
b:4,
c:3
};
功能扩展(obj1、obj2){
输出={};
用于(obj1中的var键){
用于(obj2中的var键2){
如果(键!==键2){
obj1[key2]=obj2[key2];
}
}
}
返回obj1;
}

console.log(扩展(obj1,obj2))您正在硬编码属性名称
key2
。它需要像
obj1[key2]
那样分配。Javascript允许您动态添加属性,属性名称也可以在运行时确定。因此,
Obj1[key2]
创建动态属性

另外,请注意,由于您使用的是
操作符中的
,并且没有使用
Object.hasOwnProperty()
方法对属性进行额外检查。对于带有原型链的对象,您可能会得到不同的结果,而这些结果有时可能并不理想

var obj1={
答:1,,
b:2
};
变量obj2={
b:4,
c:3
};
功能扩展(obj1、obj2){
输出={};
用于(obj1中的var键){
用于(obj2中的var键2){
如果(键!==键2){
obj1[key2]=obj2[key2];
}
}
}
返回obj1;
}

console.log(扩展(obj1,obj2))在第
15行
您正在将
obj1
上的属性分配给
.key2
而应该像这样分配属性
obj1[key2]
。这将使用键值进行赋值,就像查找键一样

还有一种奇怪的情况是,
输出
变量未使用且未定义,在我的示例中,我已将其从代码中删除

固定示例:

var obj1={
答:1,,
b:2
};
变量obj2={
b:4,
c:3
};
功能扩展(obj1、obj2){
用于(obj1中的var键){
用于(obj2中的var键2){
如果(键!==键2){
obj1[key2]=obj2[key2];
}
}
}
返回obj1;
}
延伸(obj1、obj2)

console.log(obj1)
在第15行
。这将使用键值进行赋值,就像查找键一样

还有一种奇怪的情况是,
输出
变量未使用且未定义,在我的示例中,我已将其从代码中删除

固定示例:

var obj1={
答:1,,
b:2
};
变量obj2={
b:4,
c:3
};
功能扩展(obj1、obj2){
用于(obj1中的var键){
用于(obj2中的var键2){
如果(键!==键2){
obj1[key2]=obj2[key2];
}
}
}
返回obj1;
}
延伸(obj1、obj2)
console.log(obj1)