希望我的问题很明确,我有以下代码:
function Pane(){
}
Pane.prototype.testo = function (){
console.log("I'm a function");
}
TileBased.prototype = new Pane();
function TileBased(){
}
TileBased.prototype.test = function (){
console.log("I'm a function");
}
Level.prototype = new TileBased();
function Level(){
console.log(this instanceof Pane); // -> true
this.test();
this.testo();
}
testLevel = new Level();
在这里,this.test打印I'm a function
好了但是this.testo抛出:this.testo is not a function
编辑:
原来我把它浇了太多,并且考虑的代码太少了。这里的代码有效。在我的程序的完整版本中,我创建了一个名为level的数组,并将new Level
分配给名为level的变量。在搜索" level"之后我发现了通过我的项目目录,我有变量名称冲突。
答案 0 :(得分:0)
你重写了Tilebased从Pane继承的方法,因为你在声明原型之后重新定义了它;
更新包含工作和非工作的CODEPENS
查看此codepen以重现错误:http://codepen.io/anon/pen/KaWGpW
你需要移动
function TileBased(){
}
在Tilebased的第一个实例之前;
TileBased.prototype = new Pane();
试试这个;
function Pane(){
}
Pane.prototype.testo = function (){
console.log("I'm a function");
}
function TileBased(){
}
TileBased.prototype = new Pane();
TileBased.prototype.test = function (){
console.log("I'm a function");
}
Level.prototype = new TileBased();
function Level(){
console.log(this instanceof Pane); // -> true
this.test();
this.testo();
}
testLevel = new Level();
使用交换的行工作codepen:在此处查看http://codepen.io/anon/pen/wgJERB