Javascript:嵌套对象中的“this”

时间:2016-05-10 15:52:33

标签: javascript this

我正在开发一个程序,它有一个名为“player”的对象,它是从构造函数“snake”创建的。

var player = {
  x: 0,

  sayX: function() {
    console.log(this.x);
  }
}

该代码工作正常。但是,我想从另一个名为“ani”的对象访问“sayX”函数。

var ani = {
  x: 10,

  sayAll: function() {
    console.log(this.x);
    player.sayX();
  }
}

当我尝试运行ani.sayAll时,sayX日志未定义,因为它使用了“this”,但我无法指定它引用的是哪个“this”。

有没有办法解决这个问题。

编辑: 实际上,整个代码都在另一个对象中。这会与它有关吗?

2 个答案:

答案 0 :(得分:1)

  

sayX 返回未定义

该功能正常运行,但您无法在sayAll内返回任何内容,因此返回 undefined的原因。

var player = {
  x: 0,
  sayX: function() {
    console.log(this.x);
    return 'anything';
  }
};

var ani = {
  x: 10,
  sayAll: function() {
    console.log(this.x);
    return player.sayX();
  }
};

ani.sayAll(); // logs '10', then '0', and returns 'anything';

示例屏幕截图

Code when run in Chrome dev tools

答案 1 :(得分:-1)

像这样制作'sayX'函数:

sayX: function() {
    console.log(player.x);
}

并制作'sayAll'函数,如下所示:

sayAll: function() {
    console.log(ani.x);
    player.sayX();
}

这应该有效。