盲点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的原型。
---未完待续---

浙公网安备 33010602011771号