从一个对象获取一个名称值对,并将其添加到第二个

时间:2015-11-15 18:54:37

标签: javascript

在JavaScript中,如何从一个对象中获取名称值对并将其添加到第二个对象中:

var myObj1 = {
  name : 'Jason',
  last : 'Rez'
};

var myObj2 = {};

我希望myObj2拥有'name : 'jason'属性。 编辑.. 让我说我不知道​​myObj1中哪些属性我想添加到myObj2,我不希望它们共享mem位置。

1 个答案:

答案 0 :(得分:0)

<强>更新

重新编辑

  

Lets说我不知道​​myObj1中哪些属性我想添加到myObj2,我不希望他们分享内存

如果您要复制所有,可以通过Object.keysfor-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上的属性。

示例:

&#13;
&#13;
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;
&#13;
&#13;