JS基础巩固 原型与原型链

87 阅读1分钟

引用类型数据都有对象特性, 每个对象都有一个__proto__属性(null除外),属性值是一个普通对象, 每个函数都有prototype属性,函数也是对象 实例对象通过__proto__访问构造函数的prototype属性, 当你试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,那么它会去它的_proto_中寻找

function Person() {

}
Person.prototype.name = 'Person'
let person1 = new Person()
console.log(person1)
console.log(person1.__proto__.name === Person.prototype.name) // true
console.log(person1.__proto__ === Person.prototype) // true

c.png 通过打印这个例子会发现 person1中的_proto_属性下有个name属性,刚好和person.prototype.name的值相等,可以得到实列person1是通过_proto_访问的构造函数的person的prototype属性; 还有一个constructor属性指向构造函数person

原型也是一个对象,每个对象都有一个__proto__属性(null除外),因此原型对象也是有__proto__的 也就是说当我们想查找一个对象的属性时通过__proto__属性查找prototype原型对象的属性,查找不到就通过的prototype的__proto__属性继续查找,直到找到或者到达object结束

本文仅作自己记忆,多有借鉴,不对请指出