在擴展jquery方法或者開發jquery插件的時候,咱們常常會用到的一個方法$.extend()javascript
語法:jQuery.extend( [deep ], target, object1 [, objectN ] )java
這裏不說怎麼用,做用就是兩個對象之間的繼承,能夠簡單的理解爲兩個對象的合併jquery
第一個參數[deep],默認是false,也就是淺拷貝jquery插件
若是寫爲true,就是深拷貝了(至於淺拷貝和深拷貝是什麼自行腦補...)測試
下面簡單的說下對象之間繼承的原理(實際上是直接上代碼)插件
<script type="text/javascript"> //對象之間的繼承 淺拷貝 function extendCopy(p,c){ var c = c || {}; for(var i in p){ c[i] = p[i]; } c.uber = p; //經過.uber 調用父度對象的方法 return c; } //對象之間的繼承 深拷貝 function deepCopy(p,c){ var c = c || {}; for(var i in p){ if(typeof(p[i] === 'object')){ c[i] = (p[i].constructor === Array) ? [] : {}; deepCopy(p[i],c[i]) }else{ c[i] = p[i] } } c.uber = p; return c; } //測試淺拷貝 var dad = { say:function(){ console.log("I am parent."); } } var son = extendCopy(dad); son.say(); //I am parent. son.say = function(){ //son繼承的是dad對象的引用 當修改son的方法 等同於修改了原對象 console.log("change say."); } son.say(); //change say. dad.say();//change say. 由於修改son的say 原對象的say被修改了 //測試深拷貝 var animal = { eat:function(){ console.log("父對象吃的方法") } } var dog = deepCopy(animal); dog.eat = function(){ console.log("子對象吃的方法"); } dog.eat(); //子對象吃的方法 animal.eat(); //父對象吃的方法 </script>