基于阮一峰5种继承方式的总结

前两天学习JS继承的时候,搜到了阮大神写的一篇文章http://www.ruanyifeng.com/blo...
主要讲了5种构造函数继承方式.我写此篇文章主要是为了总结学习所得.

父构造器Animal,子构造器Cat,cat是子构造器new出来的对象,"只能继承父构造器中的属性" 代表继承属性和方法.

第一种叫构造函数绑定:
此种继承方式只能继承父构造器中的属性,不能继承父构造器原型上的属性.Animal.apply(this, arguments)也可用Animal.call(this)替换.cat对象有两个层级,第一级存放着自有属性以及父构造器中的属性,第二级存放着自己函数原型上的属性(Cat.prototype)
图片描述

第二种叫prototype模式:
此种继承方式既能继承父构造器中的属性,也能继承父构造器原型上的属性.cat对象有三个层级,第一级存放着自有属性,第二级存放着父构造器的属性(加上constructor,指向创建该对象(cat)的构造器(Cat)),第三级存放着父构造器原型上的属性.
图片描述

第三种叫直接继承prototype:
此种继承方式只能继承父构造器原型上的属性.cat对象有两个层级,第一级存放着自有属性,第二级存放着父构造器原型上的属性(加上constructor,指向创建该对象(cat)的构造器(Cat)).注意:Cat.prototype.constructor = Cat会将Animal.prototype.constructor也改成Cat,从而影响父构造器创建对象
图片描述

第四种叫空对象作为中介:
此种继承方式只能继承父构造器原型上的属性.cat对象有三个层级,第一级存放着自有属性,第二级存放着临时构造器F的属性(加上constructor,指向创建该对象(cat)的构造器(Cat)),第三级存放着父构造器原型上的属性.注意:临时构造器只充当中介的作用,一般不会有自己的属性.
图片描述

第五种叫浅拷贝继承(软大神称之为拷贝继承):
此种继承方式只能继承父构造器原型上的属性.cat对象有两个层级,第一级存放着自有属性,第二级存放着父构造器原型上的除了constructor和__proto__的属性(不会拷贝原型上的constructor和__proto__属性).适合父构造器原型上的自增属性为基本数据类型的情况.
图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值