javascript--继承(原型链prototype chaining)

关键是把 ClassB 的 prototype 属性设置成 ClassA 的实例。

function ClassB(color){
    this.color = color;
    this.sayColor = function(){
        console.log(this.color);    
    }
}



function ClassA(name){
    this.name = name;
    this.sayName = function(){
        console.log(this.name)
    }
}

//这一句,就让A继承了B的所有属性和方法 ClassA.prototype
= new ClassB(); var oA = new ClassA(); oA.color = "red"; oA.sayColor();

 

这里面的关系是这样的:

实例出来的A,可以继承ClassA.prototype这个对象里面的所有属性和方法

而现在ClassA.prototype指向了ClassB的实例

所以:实例出来的A,就可以有ClassB的实例的所有方法的属性。

而ClassB的实例,又可以有ClassB.prototype的所有属性和方法,

所以:实例出来的A,也可以有ClassB.prototype的所有属性和方法

 

就像链条一样连接起来,所以叫原型链。

原本:

 

经过 ClassA.prototype = new ClassB();

 

posted @ 2012-05-28 14:33  o0Luffy0o  阅读(288)  评论(0编辑  收藏  举报