在JavaScript中,如何从一个对象中获取名称值对并将其添加到第二个对象中:
var myObj1 = {
name : 'Jason',
last : 'Rez'
};
var myObj2 = {};
我希望myObj2
拥有'name : 'jason'
属性。
编辑..
让我说我不知道myObj1中哪些属性我想添加到myObj2,我不希望它们共享mem位置。
答案 0 :(得分:0)
<强>更新强>:
重新编辑
Lets说我不知道myObj1中哪些属性我想添加到myObj2,我不希望他们分享内存
如果您要复制所有,可以通过Object.keys
或for-in
获取他们的姓名:
Object.keys(myObj1).forEach(function(name) {
myObj2[name] = myObj1[name];
});
或
var name;
for (name in myObj1) {
if (myObj1.hasOwnProperty(name)) { // Remove if you want prototype props
myObj2[name] = myObj1[name];
}
}
原始答案:
如果您只想在name
上创建一个名为myObj2
的媒体资源,其myObj1
&#39; s name
此时 / em>,然后就是
myObj2.name = myObj1.name;
我希望myObj2拥有以下名称:&#39; jason&#39;属性。
如果您希望与<{1}}共享该属性,那么它确实无法实现,但您可以使它看起来像它一样:
myObj1
这会在Object.definePropety(myObj2, "name", {
get: function() {
return myObj2.name;
},
set: function(newValue) {
myObj2.name = newValue;
}
});
上使用访问者方法创建一个权限,以访问myObj2
上的属性。
示例:
myObj1
&#13;
var myObj1 = {
name: "Jason"
};
var myObj2 = {};
Object.defineProperty(myObj2, "name", {
get: function() {
return myObj1.name;
},
set: function(newValue) {
myObj1.name = newValue;
}
});
snippet.log("myObj1.name = " + myObj1.name);
snippet.log("myObj2.name = " + myObj2.name);
snippet.log("Setting myObj2.name = 'Freddy'");
myObj2.name = "Freddy";
snippet.log("myObj1.name = " + myObj1.name);
snippet.log("myObj2.name = " + myObj2.name);
&#13;