【发布时间】:2013-05-26 07:59:10
【问题描述】:
我一直在阅读使用 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()
标签: javascript function object prototype