# prototype 与 proto
- prototype 是函数对象才有的属性,指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型
- proto 是所有对象拥有的属性,指向对象的原型
- 对象的 proto 属性等于构造函数的prototype属性
- proto 来自于 Object.prototype,可以理解成Object.getPrototypeOf()
# 原型链
- 对象的原型也是一个对象,也拥有自己的原型,形成原型链,原型链顶层是Object.prototype
- 当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层为止。
# 代码示例
function Person(name, age) {
this.name = name
this.age = age
}
const person = new Person('lisi', 20)
console.log(person.__proto__ === Person.prototype) // true
console.log(person.__proto__.__proto__ === Object.prototype) // true
// person的原型链
// person--> Person.prototype --> Object.prototype
console.log(Person.__proto__ === Function.prototype)
console.log(Person.__proto__.__proto__ === Object.prototype)
// Person的原型链
// Person ---> Function.prototype --> Object.prototype
# 参考文章
← 实现instanceof this 指向 →