我最近开始在游戏中使用backbone.js。我使用模型来创建计时器,如下所示:
var Timer = Backbone.Model.extend({
defaults: {
'hh':00, 'mm':05, 'ss':00
},
initialize: function() {
},
countDownOnce: function() {
// Count down the time by 1 sec
},
run1: function() {
this.countDownOnce();
}
run2: function() {
setInterval(this.countDownOnce, 1000);
}
});countDownOnce函数(如果像在run1中直接调用的话)可以正常工作。
但是,如果函数作为参数传递给某些内置函数,比如setInterval,就像在run2函数中一样,那么--这个的值就会丢失。
如何将此指针传播到内置函数?
发布于 2011-08-07 20:33:46
发布于 2011-08-06 08:24:29
发布于 2011-08-06 08:40:28
这个是如何设计javascript的(双关意:)
基本上,“this”绑定到当前上下文,因此,如果在一个函数/方法调用中这样:
var Data = function(name) {
this.name = name;
}
var myData = new Data("viky");将引用名称元素"inside“数据(本例中为myData )。
现在,如果您有以下内容:
var Data = function(name) {
function morphName(anotherName) {
//and if you call this like this ;)
alert(this.name); //undefined
}
}内部函数morphName绑定到“当前”上下文,即外部函数。在javascript中,一切都是一个对象,包括函数。所以外部(匿名)函数没有一个名为name的成员!(说得通吗?)
为了执行,大多数人使用以下方法(按照惯例):
var Data = function(name) {
var that = this; //capture current context. Some prefer self = this;
function morphName(anotherName) {
//then you access name like that ;)
alert(that.name);
}
}我建议您阅读javascript闭包和作用域以理解这个和那个:D。
https://stackoverflow.com/questions/6965616
复制相似问题