我正在尝试掌握“OOP”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();
编辑:使用有效的解决方案更新代码!