我继承一个对象如下:
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();
然后我收到错误“箭头没有‘绘制’方法”。只能继承一次吗?我做得正确吗?
最佳答案
这是一个工作示例 ( 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();
关于javascript - OO Javascript 继承向下两级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20763413/