[英]Adding new property to object
我有一個javascript對象,用作具有鍵值對的地圖類型。
當從控制器注入值時,將發生此映射的填充:
var people = {"2":"Brad","3":"Antonio","5":"Stacy","6":"Marry","1":"Jim"}
我想創建一個新的對象,但又有一個條目,即偽代碼
var new_people = people + {11: "John"}
我嘗試先將人復制到新人,然后再:
new_people.\"11\" = "John"
和
new_people."11" = "John"
兩者都會產生故障。 雖然任何字符串而不是數字都可以
new_people.anystring = "John"
var new_people = {"2":"Brad","3":"Antonio","5":"Stacy","6":"Marry","1":"Jim", "anystring":"John"}
您可以使用索引:
new_people['11'] = 'John';
您只需要向該對象添加一個鍵值:
people['11'] = "John";
如果密鑰是有效的標識符名稱(而不是數字),則可以使用以下代碼:
people.key = "John";
如果它不是有效的變量名,則必須使用索引:
people["~!#$#$#HV"] ="some value";
您會遇到問題,因為變量在存儲對象時會保留引用。 通過對new_people進行變異,您也在對人進行變異。
var people = {"1":"James"}
console.log(people); // Object {1: "James"}
var new_people = people;
new_people["2"] = "Jimmy";
console.log(people); // Object {1: "James", 2: "Jimmy"}
console.log(new_people); // Object {1: "James", 2: "Jimmy"}
您需要先克隆對象,然后再對克隆進行突變,以免影響原始對象。
一種簡單的方法是使用underscore.jsextend ()方法,如下所示:
var new_people = _.extend({}, people, {"2": "Jimmy"});
console.log(people); // Object {1: "James"}
console.log(new_people); // Object {1: "James", 2: "Jimmy"}
或類似地,使用jQuery這樣的 extend():
var new_people = $.extend({}, people, {"2": "Jimmy"});
console.log(people); // Object {1: "James"}
console.log(new_people); // Object {1: "James", 2: "Jimmy"}
@Gandalf StormCrow這是代碼: jsfiddle
var people = {"2":"Brad","3":"Antonio","5":"Stacy","6":"Marry","1":"Jim"};
var newpeople = {"11": "John"};
jQuery.extend(people, newpeople);
//Now: people = {"2":"Brad","3":"Antonio","5":"Stacy","6":"Marry","1":"Jim","11": "John"}
for(var i in people){
alert(people[i]);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.