嗨我試圖讓我的頭繞過javascript oop和我遇到了問題,我正在構建一個構造函數類,我在類中定義屬性現在我想定義一些方法改變這些屬性,但是當我實例化對象並調用方法時,控制檯告訴我屬性是未定義的。我想這可能與範圍有關,我一直在尋找谷歌很多,但所有介紹性文章基本相同。如何使用對象方法更改對象屬性
繼承人的簡化版本的代碼。在我的示例代碼中,我想要一個形狀在畫布上移動。它自身的對象將擁有控制其移動的方法(現在正好)。當我實例化對象時,我調用它的moveRight方法,它應該改變它的xy座標。 ,然後每隔我把它rendor屏幕在一個單獨的函數調用的對象x和y屬性
//這裏我定義對象
function Mechanoid(){
//object properties
this.life=100;
this.x=500;
this.y=200;
this.anArray=new Array(0, 0); //can i create an array like this? i know it works when called from outside the object
//object methods
this.moveAround=function(){
var clock=setInterval(Function() {
this.x=this.x+1; //console log says undefined
this.y=this.y+1;
this.anArray[0]=this.x; //console says cannot read propety of null
this.anArray[1]=this.y;
},1000);
}
}
//then instanciate
var mech=new Mechanoid;
mech.moveAround(); // calls method to change object properties
//A request for the x any y coordinates of mech object will be called in a render function where it
//will be drawn to the canvas.
誰能告訴我,爲什麼這些特性是從內無法訪問對象方法?以及我必須做些什麼來訪問它們?謝謝......有可能是一個支架在語法中丟失或我在飛行中寫了一些東西,我不認爲這是原代碼中的語法錯誤,我不認爲這是問題所在。
請創建一個小提琴,無論如何,你可能想從我的遊戲中採取一些想法(對不起,我沒有評論它) - http://borisute.com/geshem/2013/mkeller/adventure.html –