原型链的理解
面向对象的三大特性
封装 继承 多态
我们知道获取一个对象的属性,如果对象没有该属性就会到对象的原型上面获取,这里引出原型链的概念,原型上也可以有原型
1 var obj = { 2 name: 'heihei' 3 } 4 obj.__proto__ = { 5 6 } 7 obj.__proto__.__proto__ = { 8 9 } 10 obj.__proto__.__proto__.__proto__ = { 11 age: 18 12 } 13 console.log(obj.age); 14 console.log(obj.__proto__.__proto__.__proto__.__proto__);
15 console.log(obj.__proto__.__proto__.__proto__.__proto__.__proto);

由结果看出来,查找属性会沿着原型的原型的原型直到尽头查找,这就是原型链
可以看到最顶层的原型是[Object:null prototype]{} 顶层原型的原型为null
直接给结论:Object的原型是顶层原型,也就是说原型链最顶层的原型对象就是Object的原型
var obj1 = {}
var obj2 = new Object()
console.log(obj1.__proto__);
console.log(obj2.__proto__ === Object.prototype);
console.log(obj1.__proto__.__proto__);
console.log(obj2.__proto__.__proto__);


浙公网安备 33010602011771号