2014-03-05 65 views
1

例如說我有以下對象:如何用另一個對象的值替換多個對象值?

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

在這個對象我想替換的人的第一和姓氏。

而不是使用

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

的,我想使用類似

person += {firstname:"Earthworm", lastname: "Jim"} 
+0

可能需要看到[jQuery的.extend](http://api.jquery.com/jquery.extend/) – Grundy

+0

@Stijn:我不確定它是廣告uplicate。這個問題涉及到合併(這種暗示兩個對象可能沒有同名的屬性),而這個問題是關於替換屬性值(這意味着對象具有相同的屬性名稱)。 –

+1

@ PaulD.Waite該問題中的具體示例並不要求確實替換值,但答案似乎涉及添加屬性和替換屬性。 – Stijn

回答

2

一些JavaScript庫包含一個名爲extend方法,這你想要做什麼:

你可以在這裏看到下劃線的實現,如果你不想使用庫:

現在你可以看到它在這裏也沒有必要點擊:

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

工作,謝謝。 – inControl

+0

@inControl:非常歡迎。 –

2

如果你不介意使用jQuery爲目的,你可以這樣做:

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

它將替換現有字段的值並添加新字段 - >$.extend()

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} 
相關問題