2022最新版圣杯模式

优点:去除原版中间层 F 构造函数,简洁代码。

原理:将 Target.prototype 直接指向 Origin 的一个匿名实例对象,当对 Target.prototype 作个性化设置时,只会影响该匿名实例对象,而不会波及 Origin.prototype。

缺点:个性化属性和方法只能通过在Target.prototype上添加,不能改变其引用。

欢迎各位开发者讨论 / 使用,希望能够帮助到大家。

源码如下:

function inherit(Target, Origin) {

        Target.prototype = new Origin();

        // 或者:Target.prototype = Object.create(Origin.prototype);

        Target.prototype.constructor = Target; // 解决 constructor 指向不准问题

        Target.prototype.uber = origin.prototype; // 方便实例寻找自己的超类

    }

    inherit(Son, Father)

    let father = new Father();

    let son = new Son();

一般使用:本例中

1、将Father.prototype作为共享原型,把固定的共用代码写到里面。

2、将个性化公用代码写到Son.prototype上,注意:不得改变其引用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值