我很難在一個類中調用一個函數。當我開始處理這個問題時,我已經運行了它,但是在修改之後,我無法工作:((
)您可以忽略我的警報,因爲我只是將它們放在那裏以檢查函數是否被調用。
我有功能「單位」,這是我的一個類。然後我用下面調用它。
從下面的代碼,這new Unit(args)
沒有得到完成。它停在this.direction=this.setDirection();
和this.setDirection()
不叫出於某種原因。任何人都可以看看,並告訴我哪裏出了問題?
謝謝!如何在課堂上運行功能。 Javascript
var teamBlack = [];
var bking = new Unit("black", "king", new Coords(3,1, false));
teamBlack.push(bking);
function Unit(team, type, coords) {
alert("Unit started " + count);
this.team = team;
this.type = type;
this.position = coords;
this.highlight = false;
alert("before setdirection");
this.direction = this.setDirection();
alert("this " + this.type);
this.setDirection = function() {
alert("setDirection Started ");
alert(this.type);
var tempDir = [];
switch (this.type) {
case "king" :
alert("this is king");
tempDir = [this.N(), this.NW(), this.W(), this.SW(), this.S(), this.SE(), this.E(), this.NE()];
break;
case "bishop" :
tempDir = [this.NW(), this.SW(), this.SE(), this.NE()];
break;
case "rook" :
tempDir = [this.N(), this.S(), this.W(), this.E()];
break;
case "pawn" :
{
if (this.team == "white") {
tempDir = [this.S()];
} else {
tempDir = [this.N()];
}
break;
}
case "queen" :
{
if (this.team == "white") {
tempDir = [this.N(), this.W(), this.SW(), this.S(), this.SE(), this.E()];
} else {
tempDir = [this.N(), this.NW(), this.W(), this.S(), this.E(), this.NE()];
}
break;
}
}
tempDir = tempDir.filter(function (dir) {
return dir.x > -1 && dir.x < 3 && dir.y > -1 && dir.y < 4 && dir.c == false;
});
return tempDir;
}
}
要調用* this.setDirection *您分配一個值之前。你不能那樣做。將它移到後面。你可能聽說過函數聲明被「掛起」,但是你對* setDirection *的賦值不是一個聲明,而是一個簡單的函數賦值給一個對象屬性。 – RobG