盲点2:JS的继承(ES6之前)

原形链的继承(基本思想:利用原形链让一个引用类型继承另一个引用类型的属性和方法)

function superType() {
    this.property = true;
} //声明父函数,并设置其属性为true;

superType.prototype.getSuperValue = function() {
    console.log(this.property);
} // 在原型创建getSuperValue并打印属性值


function subType () {
    this.subproperty = false;
} //声明子函数, 并设置其属性为false;

subType.prototype = new superType(); //subType的原型指向了superType new出来的一个实例

subType.prototype.getSubValue = function() {
    console.log(this.subproperty);
} //在原型创建getSubValue并打印属性值

var subType = new subType(); //new一个实例
subType.getSuperValue(); // 实例继承了superType的方法

上面加粗的代码其实就是让subType的原型对象等于另一个对象的实例,这个时候原型对象将包含一个指向另外一个原型的指针,而另一个原型中也有一个指向另一个构造函数的指针。SubType继承SuperType,是通过创建superType的实例并将此实例赋值给SubType.prototype,本质是重新书写原型对象,原来存在于SuperType的所有属性和方法,都存在于SubType.protoType中

 

subType(new出来后的实例)指向SubType的原型,然而SubType由指向SuperType的原型。

---未完待续---

posted @ 2018-04-18 00:36  noleee  阅读(150)  评论(0)    收藏  举报