我对原型与原型链的一些简单理解

原型

JS中每一个函数都有一个prototype属性,这个属性指向函数的原型对象,每一个由原型对象派生的子对象,都有相同的属性。子对象就叫构造函数,从实例原型中获取相同的属性。
img

_Proto_

它是每一个子对象(除null外)都会有的一个属性,指向该对象的原型

function Person() {

};
var person = new Person();
console.log(person.__proto__ === Person.prototype); //true

img

构造函数

每一个原型都有一个constructor属性,指向该关联的构造函数。
img

function Person() {

};
var person = new Person();
console.log(person.__proto__ == Person.prototype) // true
console.log(Person.prototype.constructor == Person) // true
// 顺便学习一个ES5的方法,可以获得对象的原型
console.log(Object.getPrototypeOf(person) === Person.prototype) // true

实例与原型

当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层为止

原型的原型

img

原型链

也就是下图中蓝色的这条线
img