JS中的继承,重点:圣杯模式

1.原型链的继承

Grand.prototype.lastName = ‘Ji’;

function Grand(){
}

var grand = new Grand();

Father.prototype = grand;

function Father(){

this.name=’hehe’;
}

var father = new Father();

Son.prototype = father;

function Son(){
}

var son = new Son();

缺点:不仅继承了Grand的lastName,而且继承了Father的name;

2.借用构造函数:
call和apply

不能继承借用构造函数的原型,每次构造函数都要多走一个函数

3.共享原型

Father.prototype.lastName = ‘Deng’;

function Father(){
}

function Son(){
}

function inherit(Target ,Origin){

Target.prototype = Orgin.prototype;
}

inherit(Son,Father);

//extend inherit继承font-size : inherit(自动继承父亲的font-size(默认值))

不能随便改动自己的原型(改变一个父子都会改变)

4.圣杯模式

function inherit(Target, Origin){

function F(){};
F.prototype = Origin.prototype;

Target.prototype = new F();

Target.prototype.constuctor = Target;

Target.prototype.uber = Origin.prototype;
}

//son.__proto__ -->new F().__proto__ -->Father.prototype

var inherit = (function(){

var F = function(){};    //闭包,变成私有化变量,在函数外部无法调用

return function(Target, Origin)

{

F.prototype = Origin.prototype;

Target.prototype = new F();

Target.prototype.constuctor = Target;

Target.prototype.uber = Origin.prototype;
}

}());

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值