我对原型与原型链的一些简单理解
原型
JS中每一个函数都有一个prototype属性,这个属性指向函数的原型对象,每一个由原型对象派生的子对象,都有相同的属性。子对象就叫构造函数,从实例原型中获取相同的属性。
_Proto_
它是每一个子对象(除null外)都会有的一个属性,指向该对象的原型
function Person() {
};
var person = new Person();
console.log(person.__proto__ === Person.prototype); //true
构造函数
每一个原型都有一个constructor属性,指向该关联的构造函数。
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
实例与原型
当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层为止
原型的原型
原型链
也就是下图中蓝色的这条线