一、JS继承、函数扩展

1.JS继承

1). 构造继承(单继承、多继承):call方法和apply方法

参考: http://www.cnblogs.com/mofish/p/3507861.html

2). 原型链继承、实例继承、拷贝继承、组合继承、寄生组合继承

参考: http://www.cnblogs.com/humin/p/4556820.html

2.JS函数扩展

函数扩展是给document上的对象或属性添加、绑定函数以处理简单的需求,比如给String或Number添加一个是否存在指定数组里面进行判断返回Boolean值,如PHP中就有in_array()这个函数。但我们可以写一个类似in_array()函数来判断是一个值否在函数中。

二、Jquery函数扩展、继承

1.  简单函数扩展

参考: http://www.jb51.net/article/94389.htm

2.函数继承 extend

1).extend(dest,src1,src2,src3…srcN) ,合并多个对象

为jQuery.extend(css1,css2)为例,css1,css2各有一些属性(方法照样会如此处理,这里只讲属性).
extend函数会把css2有而css2没有的属性加到css1中,如果css2的某个属性与css1的某个属性名称享用,就会用css2的属性去覆盖css1的同名属性。css1就是最后的整和对象。或者也可以用 :

而且没有破坏css1的结构。

//用法: jQuery.extend(obj1,obj2,obj3,..)

//结果:Css1的size属性被覆盖,而且继承了Css2的weight属性
// Css1 = {size: “12px”,style: “oblique”,weight: “bolder”}

2). extend(boolean,dest,src1,src2…),深度镶套对象

新的extend()允许你更深度的合并镶套对象。下面的例子是一个很好的证明。

// 以前的 .extend()

// 结果:
// => { name: “John”, last: “Resig”, location: { state: “MA” } }
// 新的更深入的 .extend()

// 结果
// => { name: “John”, last: “Resig”,
//      location: { city: “Boston”, state: “MA” } }

与其他的类库不同的是,jQuery的extend方法提供了“深层拷贝”的功能,如果你传入的第一个参数为boolean型变量,则该变量为深层拷贝的标志,第二个参数为extend方法的目标对象,其余参数为需要进行继承的“父类”。如果第一个参数的值为true(深层拷贝),并且dest和src元素都包括相同名称的对象属性,则对该对象属性的方法和属性再进行一次复制。