例如說我有以下對象:如何用另一個對象的值替換多個對象值?
person = {firstname:"Freddy", lastname:"Fish", age:15}
在這個對象我想替換的人的第一和姓氏。
而不是使用
person.firstname = "Earthworm";
person.lastname = "Jim";
的,我想使用類似
person += {firstname:"Earthworm", lastname: "Jim"}
例如說我有以下對象:如何用另一個對象的值替換多個對象值?
person = {firstname:"Freddy", lastname:"Fish", age:15}
在這個對象我想替換的人的第一和姓氏。
而不是使用
person.firstname = "Earthworm";
person.lastname = "Jim";
的,我想使用類似
person += {firstname:"Earthworm", lastname: "Jim"}
一些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;
};
工作,謝謝。 – inControl
@inControl:非常歡迎。 –
如果你不介意使用jQuery爲目的,你可以這樣做:
$.extend(person ,{firstname:"Worm", lastname: "Jim"});
它將替換現有字段的值並添加新字段 - >$.extend()
個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}
可能需要看到[jQuery的.extend](http://api.jquery.com/jquery.extend/) – Grundy
@Stijn:我不確定它是廣告uplicate。這個問題涉及到合併(這種暗示兩個對象可能沒有同名的屬性),而這個問題是關於替換屬性值(這意味着對象具有相同的屬性名稱)。 –
@ PaulD.Waite該問題中的具體示例並不要求確實替換值,但答案似乎涉及添加屬性和替換屬性。 – Stijn