美文网首页
原型和原型链

原型和原型链

作者: Yixi_Li | 来源:发表于2019-04-25 19:29 被阅读0次

原型的定义

原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象。
function Person() {} // 这就是一个构造函数
每一个构造函数都有一个原型对象,Person.prototype,这是在函数刚出生时就被定义好了的,是一个对象。此时这个对象里,有一个constructor,指向构造函数 Person() {},还有一个proto指向Object.prototype

构造函数,原型和实例的关系

每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。

原型链

假如我们让原型对象等于另一个类型的实例,此时原型对象将会包含一个指向另一个原型的指针,相应的,另一个原型也包含着一个指向另一个构造函数的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立,如此层层递进,就构成了实例与原型的链条。就是所谓的原型链。

原型搜索机制

当以读取模式访问一个实例属性时,首先会在实例中搜索该属性,如果没有找到该属性,就会继续搜索实例的原型,还没找到的话,就会沿着原型链继续向上,直到寻找到Object.prototype

  1. Object._ proto_=== Function.prototype(因为Function是Object的构造函数)
  2. Object.prototype._ proto_===null
  3. '1'._ proto_===String.prototype
  4. Array._ proto_=== Function.prototype(同理String,Number,Boolean)
  5. Function.prototype._ proto_ === Object.prototype

相关文章

网友评论

      本文标题:原型和原型链

      本文链接:https://www.haomeiwen.com/subject/nbttnqtx.html