javascript继承模式详解

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 !!!

posted @ 2020-10-14 16:26  杰哥之家  阅读(100)  评论(0编辑  收藏  举报