是否在for循环内更新javascript对象属性?

是否在for循环内更新javascript对象属性?,javascript,Javascript,我正在用javascript做一个tic-tac-toe游戏,当我点击空格(div)时,我正在尝试让我的x和o出现。我有我的系统,这样我的ticTacToe()对象“游戏”就可以通过它的对象原型进行更新 问题是,由于我使用for循环将click事件处理程序附加到“space”类的所有div,因此我无法访问该范围内“game”对象的属性。如果我用“this”,我指的是div本身。我试着制作一个原型函数和一个构造函数来更新游戏对象的“currentPlayer”、“board”和“turn”属性,但

我正在用javascript做一个tic-tac-toe游戏,当我点击空格(div)时,我正在尝试让我的x和o出现。我有我的系统,这样我的ticTacToe()对象“游戏”就可以通过它的对象原型进行更新

问题是,由于我使用for循环将click事件处理程序附加到“space”类的所有div,因此我无法访问该范围内“game”对象的属性。如果我用“this”,我指的是div本身。我试着制作一个原型函数和一个构造函数来更新游戏对象的“currentPlayer”、“board”和“turn”属性,但我无法让浏览器识别这些属性在游戏对象中

HTML


抽搐
欢迎来到井字游戏
JS

函数ticTacToe(){
this.board=[[0,0,0]
[0,0,0]
[0,0,0]];
这1.turn=0;
此.currentPlayer=1;
}
ticTacToe.prototype={
状态:函数(){
console.log(“播放的圈数为”+this.turn+
“现在轮到玩家“+this.currentPlayer+”);
},
附件:函数(){
var spaces=document.getElementsByClassName(“空格”),
player=this.currentPlayer;

对于(var i=0;i将另一个变量绑定到此
上:

  attachClicks: function(){
    var game = this;
    var spaces = document.getElementsByClassName("space")
    for(var i = 0; i<spaces.length; i++){
      spaces[i].addEventListener('click',function(){
        if(player == 1){
          this.style.backgroundImage = "url('x.png')";
          //Update ticTacToe's turn, player, and board
        }
        else {
          this.style.backgroundImage = "url('o.png')";
          //Update ticTacToe's turn, player, and board
        }
      })
    }
attachClicks:function(){
var博弈=此;
var spaces=document.getElementsByClassName(“空格”)

对于(var i=0;i将另一个变量绑定到此
上:

  attachClicks: function(){
    var game = this;
    var spaces = document.getElementsByClassName("space")
    for(var i = 0; i<spaces.length; i++){
      spaces[i].addEventListener('click',function(){
        if(player == 1){
          this.style.backgroundImage = "url('x.png')";
          //Update ticTacToe's turn, player, and board
        }
        else {
          this.style.backgroundImage = "url('o.png')";
          //Update ticTacToe's turn, player, and board
        }
      })
    }
attachClicks:function(){
var博弈=此;
var spaces=document.getElementsByClassName(“空格”)

对于(var i=0;我必须测试它?我认为它不起作用。我认为根据他的代码,这将指的是函数,而不是对象。@GeekAb当你做
game.attachClicks()时
这个
指的是
游戏
的值,它是对象。
这个
从来没有指Javascript中的函数。你必须测试它吗?我认为它不会工作。我想根据他的代码,你指的是函数,而不是对象。@GeekAb当你做
游戏时。attachClicks()
指的是对象
游戏的值。
从不指Javascript中的函数。
  attachClicks: function(){
    var game = this;
    var spaces = document.getElementsByClassName("space")
    for(var i = 0; i<spaces.length; i++){
      spaces[i].addEventListener('click',function(){
        if(player == 1){
          this.style.backgroundImage = "url('x.png')";
          //Update ticTacToe's turn, player, and board
        }
        else {
          this.style.backgroundImage = "url('o.png')";
          //Update ticTacToe's turn, player, and board
        }
      })
    }