我想創建一個JavaScript「類」,它工作的很好,但Engine.tile.draw不能按預期工作。我似乎無法讓它在Engine.start內工作。是不是可以創建一個對象並在其中添加一個函數,就像我一樣?你們會怎麼做?任何幫助表示讚賞。 :)創建一個包含函數的對象的JavaScript類
var EngineClass = (function() {
var Engine = function() {
this.canvas = document.getElementById('game');
this.handle = this.canvas.getContext('2d');
};
Engine.prototype.start = function (mapData) {
this.tile.draw(mapData);
};
Engine.prototype.tile = {
draw: function (x, y, tile) {
this.handle.fillText(tile, x * 16, y * 16);
};
}
return Engine;
})();
var Engine = new EngineClass();
JavaScript是一種基於原型的面嚮對象語言(http://en.wikipedia.org/ wiki/Prototype-based_programming),而不是基於類的面向對象的語言。只是不要這樣做。你不會在你的車裏建一個割草機,所以不要在JS裏建立類。 – schlingel
javascript中沒有類 – defau1t
這就是我說「class」的原因。我知道當前版本中沒有任何類別的ECMA,但這是模擬它的常用方法。但是我嘗試在一個對象(Engine.tile)中添加函數的部分並不常見,因爲它不起作用。 – Jan