javascript继承模式有以下几种
1.传统模式 -- 原型链 缺点: 过多的继承了没用的东西
2.借用构造函数(常用) 缺点: 不能继承继承函数的原型 每次构造函数要多走一个函数
3.共享模式(常用) 缺点: 不能随便改动自己的原型
4.圣杯模式
共享模式
//共享模式 Father.prototype.lastName = 'li' function Father() { } function Son() { } Son.prototype = Father.prototype //直接让Son的原型等于Father的原型 var father = new Father() var son = new Son() //两者构造出来的都是共用同一个原型 //所以不能随便改动自己的原型
圣杯模式
//圣杯模式 Father.prototype.lastName = 'li' function Father() { } function Son() { } function F() {} //中间层 F.prototype = Father.prototype Son.prototype = new F() //原型链 //两者构造出来的都是共用同一个原型 //修改Son的原型不会修改Father的原型
封装圣杯模式继承方法
//封装圣杯模式继承方法 function inherit(Target, Origin) { function F() {} F.prototype = Origin.prototype Target.prototype = new F() Target.prototype.constructor = Target Target.prototype.uber = Origin.prototype //为了知道最终继承的是谁,加了uber属性,有时需要知道最终继承的是谁可以用这个属性 }
雅虎封装圣杯模式继承方法
//雅虎封装方法 var inherit = (function(){ var F = function() {} //闭包, 变量私有化 return function(Target, Origin) { F.prototype = Origin.prototype Target.prototype = new F() Target.prototype.constructor = Target Target.prototype.uber = Origin.prototype
} }())
end !!!