继承(原型链)

javascript中的继承是通过原型链来体现的

function Foo(){};
var f1 = new Foo();

f1.a = 10;

Foo.prototype.a = 100;
Foo.prototype.b = 200;

console.log(f1.a); //10
console.log(f1.b);//200

 为什么是这个结果呢?

访问一个对象的属性时,现在基本属性中找,如果没有,再沿着__proto__这条链向上找(对象的__proto__指向创建这个对象的函数的prototype,这个prototype的__proto__指向创建这个prototype对象的函数的prototype以此类推),这就是原型链

那么如何区分一个属性是基本的还是从原型当中找到的呢?可以用hasOwnProperty这个函数,那哪来的这个函数呢,它来自Object.prototype

由于所有的对象的原型链都会找到Object.prototype,因此所有对象都会有Object的方法,这就是js的继承。

猜你喜欢

转载自xiaoxiaoher.iteye.com/blog/2377396