簡體   English   中英

jQuery.extend一個對象,無論它是否存在?

[英]jQuery.extend an object, whether or not it exists yet?

問題

我在不可靠的不同位置聲明父對象的某些屬性,這樣在我聲明這些屬性時很難預測父對象是否存在。 無論發生在哪里,我都需要創建父對象,如果它還不存在,但如果確實存在則不需要重新聲明。

假設我在某處發生了這樣的JavaScript:

membership = {
    id: 5,
    name: "John"
}

在代碼中的另一個點(可能在上面的代碼塊之前或之后),我有這樣的事情:

membership.level = "gold";

我本質上需要能夠使membership.level創建membership對象(如果它還不存在),但如果確實存在,只需添加level屬性。 類似地,第一個代碼塊需要以這樣的方式工作:如果membership已經存在,它只是添加idname屬性。

我已經實現的守則

我的解決方案不起作用,但我認為你將能夠看到我想要的東西。 這是我試過的:

第一塊

membership = $.extend(membership, {
    id: 5,
    name: "John"
});

第二街區

membership = $.extend(membership , {
    level: "gold"
});

當沒有定義成員資格時,上述有時仍會出錯。 有沒有辦法以我描述的方式做到這一點? 提前致謝。

var membership = $.extend({}, membership , {
    level: "gold"
});

JSFiddle: http//jsfiddle.net/gJ9d4/

試試這個 :

membership = $.extend(membership || {} , {
    level: "gold"
});

如果未定義成員資格,它將創建一個對象。

小提琴

jsFiddle Demo

通常這是通過||來完成的 操作者

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM