$.extend 的相關用法
1.1 $.extend(result,item1,item2…..)
將所有的參數項都合並result中,返回result,會破壞result的結構。
1.2 $.extend({},item1,item2,……)
將所得的結果全部合並在{}中,並返回,不會破壞原有的項的結構。
1.3 $.extend(bool,{},item1,item2….)
Extend方法還有帶bool型參數的重載。
bool型參數為true表示深拷貝,為false時表示淺拷貝。
示例:
var obj={name:“vanida”,age:25,address{provice:”河南”,city:”鄭州”}};
var obj1={sex:”girl”,address{city:” 上海”}};
var result=$.extend(true,obj,obj1);
var result1=$.extend(false,obj,obj1);
結果:
result={name:“vanida”,age:25,sex:”gril”,address:{provice:”河南”,city:”上海”}};
result1={name:“vanida”,age:25,sex:”gril”,address:{ city:”上海”}};
說明:
當參數為ture時,即為深拷貝,obj的子項有與obj1中的子項相同屬性的值不一樣時,obj中子項的值會將obj1子項中的值給覆蓋,當子項obj的屬性跟obj1中的屬性不同時,會與obj進行合並。
當參數為false時,子項obj中的子項中與obj1中的子項屬性相同時,obj1中子項的屬性值會將obj中的值給完全覆蓋。
1.4 $.extend(item)
該方法是將item合並到Jquery的全局對象中去,相當於為Jquery全局對象添加了一個
靜態方法(對應這里的靜態方法,當然還有實例方法,在后邊有介紹)。
示例:
$.extend({SayHello:function(value){alert(“hello “+value);}});
這樣寫過之后,就可以直接調用SayHello方法:
$.SayHello(“Olive”);
說明:該方法相當於為Jquery類添加了新的方法。
1.5 $.fn.extend(item)
上邊提到的$.extend(item)說是為Jquery類添加了靜態方法,那么這里的$.fn.extend(item)就是為每一個實例添加一個實例方法了。
示例:
$.fn.extend({sayName:function(name){alert(“hello “+name);}});
這樣寫過之后,在獲取每一個示例之后,都可以調用該方法:
$(“#id”).sayName(“lucas”);
1.6 $.fn是指jquery的命名空間,加上fn上的方法及屬性,會對jquery實例每一個有效。
如擴展$.fn.hello(),即$.fn.hello()是對jquery擴展了一個hello方法,那么后面你的每一個jquery實例都可以引用這個方法了.
那么你可以這樣子:$("#dom").hello();
源碼:
jQuery.fn = jQuery.prototype ={
init: function( selector, context ){//....
//......
};