js原型链理解(求老哥们指点啊啊啊,有没有毛病)

197 阅读1分钟
  • 所有实例中都存在一个隐式原型对象:__proto__
  • 所有函数中都存在一个显式原型对象:prototype
  • 当实例中查找一个自身不存在的name属性时,会在__proto__对象中去找(也就是构造函数的prototype对象中去找),如果找不到再去上一层的__proto__中去找,直到返回null

function Foo () {
    this.name = "老王"
}

let f1 = new Foo()
console.log(f1.age) // undefined 

Foo.prototype.age = 40
console.log(f1.age) // 40  实例本身没有age属性 会在自身的隐式原型对象__proto__中找(也就是父元素的prototype对象)

console.log(f1.sex) // undefined
Object.prototype.sex = '女'

console.log(f1.sex) // 女    如果自身的__proto__中也不存在,则会去自身的this.__proto__.__proto__对象中找,也就是Object.prototype中找 直至返回null

Foo._proto__ === Object.prototype // true