有没有办法打印出数组players
的值,如下例所示?我现在试着找几个小时的解决方案......
function Room(name, id, owner) {
this.players = [];
this.movementz = function() {
console.log(this.players);
}
}
我正在使用setInterval
调用该函数,如下所示:
setInterval(room.movementz, 1000);
答案 0 :(得分:6)
此处的问题与this
对象有关:创建对象并手动调用它的movementz
方法将起作用,因为this
元素是对象本身,但< strong>使用setInterval
会导致使用this === window
调用该方法。
以下是一个例子:
var room = new Room();
room.movementz(); // []
setInterval(room.movementz, 1000); // undefined
这是因为当movementz
方法被setInterval
调用时,this
对象为window
,因此,为了解决此问题,你&#39;我必须强制使用room
作为this
来调用该函数。您可以使用bind
方法轻松完成此,这是一个示例:
var room = new Room(),
players = "hello";
setInterval(room.movementz, 1000);
// this will output "hello" because this === window
setInterval(room.movementz.bind(room), 1000);
// this will output [], because now this === room