原型链:
由于 proto 是任何对象都有的属性,而JS里万物皆为对象,所有会形成一条 proto连起来的链
递归访问 proto 必须最终到头,并且值是null
当js引擎查找对象的属性时,先找到对象本身是否有该属性,如果不存在,会在原型链上找,但是不会查找自己的prototype
var A = function () {};
var a = new A();
console.log(a.__proto__); //object A的原型 A{}
console.log(a.__proto__.__proto__); //Object 对象Afunction A 的原型
console.log(a.__proto__.__proto__.__proto__); //null
原型的指向是可以改变的
实例对象的原型proto指向的是该对象所在的构造函数的原型对象
构造函数的原型对象prototype指向如果改变了,实例对象的原型proto指向也会改变
实例对象和原型对象之间的关系是通过proto原型来联系起来的,这个关系就是原型链
网友评论