跳到主要内容

原型链和继承

搞清楚这个问题很简单,你只要记住一点:实例的 __proto__ 指向对象的 prototype

换句话说,只要对象原型有的属性,那么他的实例就可以通过 __proto__ 访问。例如:

Object.prototype.ygeeker = "Hello YGeeker"

function foo() {
    return this.ygeeker
}

console.log(foo.__proto__.ygeeker) // "Hello YGeeker"
console.log(foo.ygeeker) // "Hello YGeeker"
console.log(foo()) // "Hello YGeeker"

对象属性的访问顺序

首先记住一点:原型链的尽头(root)是 Object.prototype。所有对象均从 Object.prototype 继承属性。

关联知识

有了原型链的知识,我们可以推出很多判断数组的方法:

  • instanceof
  • [].constructor === Array
  • Object.prototype.toString.call([]) === "[object Array]"

扩展阅读