1
我試圖通過擴展兩個對象來創建一個對象。嵌套對象的JQuery擴展 - 在擴展上設置道具也改變了原來的擴展對象
我通過擴展「選項」和「默認」對象來創建設置對象。 這個工程,但後來我設置settings.limit = 1000
,我的「default.limit
」也將設置爲1000.
這是行爲設計?如果是,什麼是推理,我怎樣才能避免這種情況?
這裏也是小提琴:https://jsfiddle.net/cq3d55bn/
var defaults = { validate: false, limit: { a: 1, b: 2 }, name: "foo" };
var options = { validate: true, name: "bar" };
// Merge defaults and options, without modifying defaults
var settings = $.extend({}, defaults, options);
console.log(settings);//everything is correct here
var limit = settings.limit;
limit.a = 1000;
console.log('after',defaults);//here defaults.limit = 1000 !?!?!
'jQuery.extend()'文檔(http://api.jquery.com/jQuery.extend/)表示_Merge默認值和選項,沒有修改默認值_,所以我也想知道結果。我基於jQuery文檔頁面上的最後一個示例創建了另一個小提琴並獲得相同的結果:https://jsfiddle.net/xyt8nsvx/ – Jan