看完王福鹏继承观后感
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来区分