jquery 的extend 方法是我們寫插件是常用的方法,該方法有一些重載原型,在此,我們一起去了解了解。
一、JQ的擴(kuò)展方法原型是:
extend(dest,src1,src2,src3,....);
它的含義是將src1,src2,src3,...合并到dest中,返回值為合并后的dest,由此可見
該方法合并后,是修改了dest的結(jié)構(gòu)的。如果想要得到合并的結(jié)果又不想修改dest的結(jié)構(gòu),可以如下使用:
var newSrc = jQuery.extend({},src1,src2,src3...) //也就是將{}作為dest的參數(shù)
這樣就可以將src1,src2,src3... 進(jìn)行合并,然后合并并將結(jié)果返回給newSrc,如下例:
var result = jQuery.extend({},{name:"tom",age:21},{name:"jerry",sex:"boy"})
那么合并后的結(jié)果:
result = {name:"jerry",age:21,sex:"boy"}
也就是說后面的參數(shù)如果和前面的參數(shù)存在相同的名稱,那么后面的會覆蓋前面的參數(shù)值。
二、 省略dest參數(shù)
上述的extend方法原型中的dest參數(shù)可以省略的,如果省略了,則該方法只能有一個參數(shù),并且是將該參數(shù)合并到調(diào)用extend方法的對象中去,如:1、jQuery.extend(src) 該方法就是將SRC合并到j(luò)Query的全局對象中去,如:
jQuery.extend({hello:function(){alert("hello");}});
就是將hello方法合并到j(luò)query的全局對象中去。
2、jQuery.fn.extend(src) 該方法將src合并到j(luò)query的實力對象中去,如:
jQuery.fn.extend({hello:function(){alert("hello");}});
就是將hello 方法 合并到 jquery的實例對象中。
下面舉幾個常用的擴(kuò)展實例:
jQury.extend(net:{});
這時在jquery全局對象中擴(kuò)張一個空間名。
jQuery.extend(jQuery.net,{hello:function(){alert('hello');}});
這是將方法hello擴(kuò)展到之前擴(kuò)展的jquery的net命名空間中去。
3、jquery還有一個重載原型:
extend(boolen,dest,src1,src2,src3......)
第一個參數(shù)boolen代表是否進(jìn)行拷貝,其余參數(shù)和前面介紹一樣,什么叫深層拷貝,我們來看下面的例子:
var result= jQuery.extend(ture,{},{{ name: "John", location: {city: "Boston",county:"USA"}},{ last: "Resig", location: {state: "MA",county:"China"} });
輸出 result = {name:"john",last:"resig",location:{city:"boston",state:"ma",conty:"china"}}
也就是 src 中嵌套的子對象也進(jìn)行合并,反之 如果 第一項參數(shù)為false,
輸出 result = {name:"john",last:"resig",location:{state:"ma",county:"china"}}
以上就是extend 在項目中會經(jīng)常使用到的一些細(xì)節(jié)
|
|
來自: 文章收藏者 > 《技術(shù)文章》