原型和原型链

来源:互联网 发布:淘宝开店起名 编辑:程序博客网 时间:2024/04/27 19:35

原型链

原型链:实例对象与原型之间的连接,叫做原型链

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 = 10console.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
0 0