看完王福鹏继承观后感

2018-07-24  本文已影响0人  神话降临

为何用“继承”为标题,而不用“原型链”?

因为java中的继承与javascript中的继承又完全是两回事儿。因此,这里把“继承”着重拿出来,就为了体现这个不同。
java是类继承,
javascript中的继承是通过原型链来体现的。先看几句代码

function Foo() {
}
var f = new Foo()
f.a = 1
Foo.prototype.a = 100;
Foo.prototype.b = 200;
console.log(f.a)  // 1
console.log(f.b)  // 200

以上代码中,f是Foo函数new出来的对象,f.a是f1对象的基本属性,f.b是怎么来的呢?——从Foo.prototype得来,因为f.__proto __指向的是Foo.prototype


image.png

访问一个对象的属性时,先在基本属性中查找,如果没有,再沿着__proto __这条链向上找,这就是原型链。

而Foo.prototype是通过原型链(__proto __)继承自Object.prototype

区分是自己的属性还是继承的属性可以用 hasOwnProperty来区分

上一篇下一篇

猜你喜欢

热点阅读