OO Javascript继承两个级别

时间:2013-12-24 15:46:25

标签: javascript oop

我继承了一个对象如下:

projectile.prototype = Object.create(interactiveElement.prototype);
function projectile(){
    interactiveElement.call(this);
}

interactiveElement有一个方法draw,已定义。

interactiveElement.prototype.draw = function(){

}

当我这样称呼它时它可以正常工作

var myArrow = new projectile();
myArrow.draw();

但是如果再次继承并从而调用draw方法:

arrow.prototype = Object.create(projectile.prototype);
function arrow(){
    projectile.call(this);
}

var myArrow = new arrow();
myArrow.draw();

然后我得到错误“箭头没有方法'画''。你能继承一次吗?我是否正确地做到了?

1 个答案:

答案 0 :(得分:0)

这是一个工作示例(http://jsfiddle.net/2n62J/

function interactiveElement() {
}

interactiveElement.prototype.draw = function(){
    console.log('draw');
};

function projectile() {
    interactiveElement.call(this);
}

projectile.prototype = Object.create(interactiveElement.prototype);
projectile.prototype.fire = function() {
    console.log('projectile fire');
};

function arrow() {
    projectile.call(this);
}
arrow.prototype = Object.create(projectile.prototype);
arrow.prototype.fire = function() {
    projectile.prototype.fire.call(this); // if you want to call the parent function
    console.log('arrow fire');
};

var myArrow = new projectile();
myArrow.draw();
myArrow.fire();

var myArrow2 = new arrow();
myArrow2.draw();
myArrow2.fire();