[英]jQuery.extend an object, whether or not it exists yet?
問題
我在不可靠的不同位置聲明父對象的某些屬性,這樣在我聲明這些屬性時很難預測父對象是否存在。 無論發生在哪里,我都需要創建父對象,如果它還不存在,但如果確實存在則不需要重新聲明。
例
假設我在某處發生了這樣的JavaScript:
membership = {
id: 5,
name: "John"
}
在代碼中的另一個點(可能在上面的代碼塊之前或之后),我有這樣的事情:
membership.level = "gold";
我本質上需要能夠使membership.level
創建membership
對象(如果它還不存在),但如果確實存在,只需添加level
屬性。 類似地,第一個代碼塊需要以這樣的方式工作:如果membership
已經存在,它只是添加id
和name
屬性。
我已經實現的守則
我的解決方案不起作用,但我認為你將能夠看到我想要的東西。 這是我試過的:
第一塊
membership = $.extend(membership, {
id: 5,
name: "John"
});
第二街區
membership = $.extend(membership , {
level: "gold"
});
當沒有定義成員資格時,上述有時仍會出錯。 有沒有辦法以我描述的方式做到這一點? 提前致謝。
var membership = $.extend({}, membership , {
level: "gold"
});
JSFiddle: http : //jsfiddle.net/gJ9d4/
通常這是通過||
來完成的 操作者
var membership = membership || { id: 5, name: "John" };
基本上,如果membership
未定義,則成員資格設置為等於對象定義,但如果定義了membership
,則只需重新分配membership
。
如果您願意,可以使用extend調用來執行此操作。
//this could be used as the extend membership
var membership = membership || { id: 5, name: "John" };
membership = $.extend(membership , {
level: "gold"
});//this could also be membership.level = "gold";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.