在扩展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>