Javascript中的多个(???)继承

时间:2014-04-16 08:05:11

标签: javascript inheritance

假设在JavaScript中,我有一个类Human和另一个类Child(请不要因使用单词class而杀了我)

function Human(name){
    this.name=name;
}

function Child(age){
    this.age=age;
}

我可以创建一个Human对象:

var h=new Human('MyName')

和一个孩子的对象:

var c=new Child(10)

我也可以通过以下方式继承:

var ih=Object.create(h)

继承/复制创建的对象h。

但是,有没有什么方法可以创建Child的对象并让它继承Human类。即,我的对象应具有HumanChild属性。就Javascript而言,我认为这听起来像是多重继承。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:0)

只能有一个原型,但您可以制作混合对象,如下面的代码所示:

function Human(name){ ... }

function NoiseSource(decibel){ ... }

function Child(age){ ... }

var dave = new Child(3);
$.extend(dave, new Human("Dave"));
$.extend(dave, new NoiseSource(120));

但是在你的例子中你不需要它,因为你需要Child的单个Human parent类,这可以通过常规的原型继承来实现。

答案 1 :(得分:0)

上一次stackoverflow问题: Good Example of JavaScript's Prototype-Based Inheritance

Nice Java / javascript并排代码比较: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model

我建议(在您的情况下使用this.base):

    function Human(name){
        this.name=name;
    }

    function Child(age){
        this.base = Human;
        this.age=age;
    }

var myChild = new Child(5) // 5 yr old
myChild.name = 'Harry';
console.log( myChild );

在firefox控制台中提供:

Child { age=5, name="Harry", base=Human()}

希望有所帮助