是什么
对象 有 __proto__
属性,指向原型对象,原型对象也是对象,也有__proto__
属性,指向原型对象的原型对象,这样形成的一环一环的链式结构,就是原型链。
老祖宗 function Object()
function Person() {}
let per = new Person()
//原型链:
per.__proto__ ==> Person.prototype
Person.prototype.__proto__ ==> Object.prototype
Object.prototype.__proto__ ==> null

属性查找原则
简单理解:沿着对象的原型链来查找
- 先找对象自身,自身有就直接来使用
- 对象自身没有,就找原型对象
- 如果原型对象也没有,就沿着原型链继续往上找,直到
Object.prototype
- 如果整个链上都没有,返回
undefined