JS继承

1. 单个继承
Object.create(Proto [,propertiesObject]);  // 使用指定的原型对象和属性创建一个新对象。

2.原型链方式

因为有可能重写或添加子类型的方法,为了保证之后创建的所有子类型都继承同一个超类型,一定要在创建新实例之前修改原型对象。

  子类型构造函数.prototype=超类型的实例;

注意:

  通过原型链实现的继承,不能使用对象字面量创建原型方法,因为这样会重写原型链。

  不能向超类型的构造函数中传递参数。

  如果原型被重写,最好同时修改原型的constructor属性。

  如果超类型的属性中有引用类型值,所有实例共享一个属性,不好

3. 组合继承

(1)在子类型构造函数内部用call/apply调用父类型的构造函数。

注意:arguments指SubType接收到的所有参数,SupType从0位开始按顺序读取。所以SubType构造函数的参数中前面是SupType的参数,之后才是SubType用到的参数(SubType能够用标识符识别参数的值,而SupType只能通过位序使用)。

(2)将父类型的实例赋值给子类型的原型,继承父类共享的属性和方法。

注意:组合继承会两次调用父类构造函数,在子类实例和原型中会有重复的属性。

4.寄生式组合继承

通过借用构造函数来继承属性,通过原型链的混合形式来继承方法。不必为了指定子类型的原型而调用超类型的构造函数,只需父类型的原型副本。

//使用指定的原型对象创建一个新的空对象作为中间体,类似于Object.create() 方法

转载于:https://www.cnblogs.com/liuqr/p/7104169.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值