WdBly Blog

懂事、有趣、保持理智

周维的个人Blog

懂事、有趣、保持理智

站点概览

周维 | Jim

603927378@qq.com

推荐阅读

解释什么是原型链?

解释什么是原型链?

要解释什么是原型链,需要知道什么是原型。所谓的原型是指JS创建对象的一种模式。

原型

JS中每个函数被创建时都会包含一个prototype属性并指向一个对象,这个对象的用途是包含了构造函数所有实例共享的属性和方法,这个对象也被叫做原型对象。

每当代码读取实例的属性或方法时,首先检查实例本身是否包含,再检查实例的原型对象上的属性方法。

上面就是通过原型模式创建对象属性读取的搜索过程。

原型链

JS将原型链作为实现继承的主要方法,其思想是利用原型模式让一个对象继承另一个对象的属性和方法。

在原型模式中我们知道了,原型对象上包含了所有实例的公共属性方法,那么,如果我们将原型对象等于另一个类型的实例,会怎么样呢?

显然,此时的原型对象将包含一个指向另一个原型的指针,那么上述关系层层递进,实现了实例和原型对象的链条,这就是原型链。

实现一个简单的原型链

// 父类 function SuperType() { this.property = true; } // 向父类的原型对象添加方法; SuperType.prototype.getSuperVale = function() { return this.property; } // 子类 function SubType() { this.subproperty = false; } // 将子类的原型对象等于父类的一个实例, 重写原型对象,constructor别重写了。 SubType.prototype = new SuperType(); // 为子类的原型添加方法 SubType.prototype.getSubValue = function() { return this.subproperty; } var instance = new SubType(); console.log(instance.getSuperVale()) // true

通过实现原型链,实际上是扩展了上面将的原型模式的搜索过程。

最后,我们需要知道,在JS中,所有对象都是Object构造函数的实例,当然也包括原型对象。

所以在原型链的最顶端,应该是Object.prototype。

提交

全部评论0

暂时没有评论...