理解JavaScript 中的原型模式

2020-04-25  本文已影响0人  moofyu

原型对象的创建

原型对象

[[prototype]]

这个是一个指针,这指针指向原型对象。 脚本没有标准的方式访问这个[[prototype]],但FireFox Safari Chrome 都支持一个属性称为proto (称为“隐式原型”)

连接存在于实例和原型对象之间,而不是实例与构造函数。

Person–> Person.prototype <–person1

isPrototypeOf

判断某个实例和某个原型的对应关系。

Person.prototype.isPrototypeOf(person1);//true

它就是判断实例的[[prototype]]是否指向调用这个方法的对象。

Object.getPrototypeOf

ES5新方法,用来获取一个实例的原型。

Object.getPrototypeOf(person1)==Person.prototype;   // true

Object.getPrototypeOf(person1).name; // "Nicholas"

返回的原型,可以访问这个原型中的属性方法值。
我们在使用原型继承的时候会用到这个方法。

原型链

原理:每当代码读取某个对象的某个属性时,都会执行一次搜索,目标是具有给定名字的属性。搜索首先从对象实例本身开始,如果在实例中找到了具有给定名字的属性,则返回该属性的值;如果没有找到,则继续搜索指针指向的原型对象,在原型对象中搜索给定名字的属性。如果搜索到了属性就停止。仍然搜索不到,就搜索这个原型对象的上一级的原型对象,直到Object.prototype,这个是所有对象的根原型对象,它的上一级是null。

文章参考

上一篇 下一篇

猜你喜欢

热点阅读