原型链
对象的__proto__
属性,指向了对象的原型(在早期的浏览器中是不能直接访问这个属性的, 现在可以了) 我在chrome下测试:
var arr = [1,2,3];
arr.__proto__;//[]
arr.__proto__.__proto__;//Object {a: 1}
arr.__proto__.__proto__.__proto__;//null
可以看到每个对象都有原型,组成了原型链, 对象在查找属性时,从自身开始, 依次到原型链顶端, 查看属性是否存在.
__proto__
怎么产生的
通过构造函数生成的对象, 构造函数的prototype
属性就是对像的原型__proto__
;
function Cat(){}
Cat.prototype = {};
var cat = new Cat();
console.log( cat.__proto__ === Cat.prototype);//true