Я пытаюсь понять методы JavaScript «ООП», и сегодня я начал писать небольшое тестовое приложение. В принципе, это игровой цикл, и каждый координат обновления должен быть увеличен, чтобы перемещаться элемент HTML.Модуль/прототип и несколько экземпляров
Проблема заключается в том, что я хочу иметь возможность запускать более одного экземпляра приложения, и поэтому я пытаюсь сохранить данные экземпляра в this
, но то, что сохраняется в моем конструкторе, и метод exec()
недоступен в частный метод update()
. Что, кажется, офицер, проблема?
var Jsloth = (function() {
var Jsloth = function() {
var sloth = document.createElement('div');
var attr = document.createAttribute('class');
attr.value = 'sloth';
sloth.setAttributeNode(attr);
this.sloth = document.getElementsByTagName('body')[0].appendChild(sloth);
};
var exec = function() {
this.x = 0;
this.y = 0;
var that = this;
setInterval(function() {
that.update();
}, 1000/10);
};
var update = function() {
this.x++;
this.y++;
this.sloth.style.left = this.x + 'px';
this.sloth.style.bottom = this.y + 'px';
};
Jsloth.prototype.constructor = Jsloth;
Jsloth.prototype.exec = exec;
Jsloth.prototype.update = update;
return Jsloth;
})();
var sloth1 = new Jsloth();
sloth1.exec();
Edit: Обновленный код с рабочим решением!
Если вы объявляете функции с операторами объявления функций, вы можете указать им имена, которые будут отображаться в трассировке стека при отладке. Нет никаких причин объявлять их анонимными функциональными выражениями, например, для «exec», «update» и внутреннего «Jsloth». – Pointy
'function exec() {/ * ... * /}' - Я согласен, что это запутывает; эта тенденция объявления функций, как вы начали появляться в сообщениях в блоге и т. д. пару лет назад. На самом деле это работает очень хорошо, но это ... ну, это сводит меня с ума, лично :-) – Pointy
Ха-ха. Я приобрел книгу Крокфорда, надеюсь, что она меня прямо расставит. Когда вы выполняете 'function exec() {/ * ... * /}', могу ли я использовать мое пространство имен 'Jsloth' и' prototype'? Bah, в Java есть только один способ ... При поиске JS существует 8 способов (наклонить его). – Viktor