OOP 样式的 Javascript setInterval() 不起作用

标签 javascript

我正在创建一个程序来使用 javascript 重复移动对象。函数在分开时可以工作,但是当我尝试使用 OOP 模式时,它会反复出现一个奇怪的错误,说

Uncaught TypeError: this.Move is not a function

这是我的代码

function Bot(){
     this.XPos =0;
     this.YPos=0;
     this.AsyncMove=setInterval(function(){ 
         this.XPos+=10;
         this.YPos+=10;
         this.Move();
     },100);
}

Bot.prototype = {
     constructor:Bot,
     Move:function(){
         console.log(this.XPos+" ,"+this.YPos);
     }

};

最佳答案

你应该像这样将当前实例绑定(bind)到匿名函数

this.AsyncMove=setInterval(function(){ 
    this.XPos+=10;
    this.YPos+=10;
    this.Move();
}.bind(this),100);

关于OOP 样式的 Javascript setInterval() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30117534/

相关文章:

javascript - 像 PHPMYAdmin 一样通过点击更改元素

javascript - 是否可以在Android中编写一个生成两个数组的函数

javascript - 将不同的类别应用于 (Shopify) 中的 ODD/EVEN 博客文章

javascript - jQuery 复选框禁用并添加类

javascript - 即使鼠标悬停丢失,也使下拉菜单仍然可见

javascript - 如何在函数内部为 jquery 工具提示调用不同的 var 字符串

javascript - 避免在 Nuxt VueJs 中直接改变 Prop

javascript - JScript:动态加载 JavaScript 库

JavaScript/jQuery改变img图片

javascript - setTimeout 的语法不正确