原型链
原型链:实例对象与原型之间的连接,叫做原型链
function Human(){
this.name;
}
Human.prototype.age = 22;
var a = new Human();
console.log(a.age)
这里的age挂载到了Human的原型上面了。其实原型就是一个对象。a为什么能找到原型上面的对象呢?
这里实例对象就是a
原型就是Human.prototype
他们之间的链接就是原型链
function Human(){
this.age = 20;
}
Human.prototype.age = 22;
var a = new Human();
a.age = 10
console.log(a.age) // 10
这里面就可以将Human.prototype.age = 22; 这个类比成css里面的class的权重
this.age = 20;这个类比成css里ID的权重
a.age = 10 这个当然就是内联元素权重最高,它会替换上面的this.age的值,因为this也就是a。所以最后的结果就是10
其实本质上是a先会在自己的prototype属性上查找有没有 你需要的属性,如果没有的话就在查找原型链上的。所以a.age是a上面的属性所以它的权重是最高的
原型链的查找是从内层一层一层往外查找
并且原型链的最外层其实是 :Object.prototype
function Human(){
// this.age = 20;
}
//Human.prototype.age = 22;
Object.prototype.age = 30;
var a = new Human();
console.log(a.age)
console.log(a)//30 这个例子证明原型链的最终是Object.prototype