如何用另一个对象的值替换多个对象值?

时间:2014-03-05 10:41:53

标签: javascript

例如说我有以下对象:

person = {firstname:"Freddy", lastname:"Fish", age:15}

在这个对象中,我想替换该人的名字和姓氏。

而不是使用

person.firstname = "Earthworm";
person.lastname = "Jim";

我想使用像

这样的东西
person += {firstname:"Earthworm", lastname: "Jim"}

3 个答案:

答案 0 :(得分:2)

如果你不介意为此目的使用jQuery,你可以这样做:

$.extend(person ,{firstname:"Worm", lastname: "Jim"});

它将替换现有字段的值并添加新字段 - > $.extend()

答案 1 :(得分:2)

某些JavaScript库包含一个名为extend的方法,它可以执行您想要的操作:

如果您不想使用库,可以在此处查看Underscore的实现:

现在你也可以在这里看到它,没有必要点击:

_.extend = function(obj) {
    each(slice.call(arguments, 1), function(source) {
        if (source) {
            for (var prop in source) {
                obj[prop] = source[prop];
            }
        }
    });
    return obj;
};

答案 2 :(得分:1)

您可以使用Object.defineProperty()

http://jsfiddle.net/9Bfrc/1/

person1 = {firstname:"Freddy", lastname:"Fish", age:15};
person2 = {firstname:"errr", lastname:"Fsdfish"};
props=Object.getOwnPropertyNames(person2);
for(i in props){
    var prop=''+props[i];
    Object.defineProperty(person1,prop,{value:person2[prop]});
}
console.log(person1); //Object { firstname="errr", lastname="Fsdfish", age=15}