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__属性).适合父构造器原型上的自增属性为基本数据类型的情况.
图片描述


小被子
839 声望10 粉丝

下一篇 »
耦合