什么是原型?
每一个函数身上,都有一个 prototype 的属性,称为“原型”。
function Person() {}console.log(Person.prototype); // {constructor: ƒ}
每一个对象身上,都有一个__proto__ 的属性,称为“隐式原型”。
function Person() {}const person = new Person();console.log(person.__proto__);
结论:每一个对象的 __proto__,都指向创建该对象的函数的prototype。
原型链
原型链就是由对象的 __proto__ 和函数的 prototype 组成的一个链条。
原型链的作用就是,当一个对象在使用自己身上不存在的属性或方法时,就可以沿着原型链到函数的 prototype 身上去查找。
