Я пытаюсь создать 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
Вот почему я сказал «класс».Я знаю, что в текущей версии av ECMA нет классов, но это общий способ ее эмулировать. Но часть, где я пытаюсь добавить функции внутри объекта (Engine.tile), не является распространенной, я думаю, поскольку она не работает. – Jan