※$.extend
$(function(){ var object1 = { apple: 0, banana: { weight: 52, price: 100 }, cherry: 97 }; var object2 = { banana: { price: 200 }, durian: 100 }; var object3 = { banana: {name:'bruce',price: 400}, apple: 20, duck:{name:'quack', attribute:'blue'}, durian:200 }; console.log(JSON.stringify(object1)); console.log(JSON.stringify(object2)); console.log(JSON.stringify(object3)); console.log("");console.info(""); $.extend(true, object1, object2, object3); // $.extend(object1, object2, object3); // var xxx = $.extend({}, object1, object2, object3); console.log(JSON.stringify(object1)); console.log(JSON.stringify(object2)); console.log(JSON.stringify(object3)); });
※$.extend 只會影響第一個物件,然後後面的物件如果 KEY 一樣,就會一直覆蓋下去
※第一個參數可以寫 true 和 {} 兩個,官方說 false 不支援,但第一個參數不是必要的
如果寫{},不會影響原本的 JSON,必需要宣告一個變數來接
如果不寫第一個參數,結果和寫{}一樣,但會影響原本的 JSON,所以不用宣告變數來接
以上兩個 (不寫和{}),一個 KEY是一個整體,是不可拆開的,如果有一樣的 KEY,後面的物件會一直覆蓋
如果寫 true 表示 KEY 不是一個整體,如果有一樣的 KEY,後面的物件會一直附加到後面
※$.fn.extend
可在物件增加方法$(function(){ $.fn.extend({ ooo: function() { return this.each(function() { this.checked = true; }); }, xxx: function() { return this.each(function() { this.checked = false; }); }, zzz: function() { return this.each(function(){ this.title = 'he he he radio'; }); } }); $("input[type='checkbox']").ooo(); $("input[type='radio']").zzz(); }); ---------- <input type="checkbox" value="a1" name="ch" /> <input type="checkbox" value="a2" name="ch" /> <input type="checkbox" value="a3" name="ch" /> <input type="radio" value="r1" name="ra" /> <input type="radio" value="r2" name="ra" />
※將鼠標放在radio會出現title
沒有留言:
張貼留言