前两天学习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__属性).适合父构造器原型上的自增属性为基本数据类型的情况.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。