我一直在阅读有关HTML5和JavaScript的游戏设计,并且这让我了解到对象。因此,在阅读完该书并完成项目后,我决定将这个新发现的知识融入到我的项目中。所以我有一个问题,对象能否或者应该调用它们自己的函数?例如:
var someObject = {
start: function() {
check();
},
check: function() {
console.log("Check!");
}
};
someObject.start();
这本书展示了一个使用计时器的例子,其做法是:
var timer = {
start: function() {
var self = this;
window.setInterval(function(){self.tick();}, 1000);
},
tick: function() {
console.log('tick!');
}
};
在计时器对象的示例中,它使用self来调用内部函数的引用,那么这是否意味着我应该使用self来调用内部函数,还是这是使用对象的正确方式?还是最佳实践?提前谢谢。
var someObject = {
start: function() {
var self = this;
self.check();
},
check: function() {
console.log("Check!");
}
};
someObject.start();
setTimeout
的例子中使用它的原因是因为它的回调在全局范围内执行,所以setTimeout
回调中的this
值是window
。为了保留对原始对象的引用,必须使用该方法(将其存储在self
中)或某种形式的Function.bind()
。 - Ian