Cod*_*gie 9 javascript prototype function object
我一直在阅读使用HTML5和JavaScript的游戏设计,它向我介绍了对象.因此,在阅读完本书并开展项目后,我决定采用这些新发现的知识并将对象集成到我自己的项目中.所以这是我的问题可以或应该对象调用自己的函数?例如:
var someObject = {
start: function() {
check();
},
check: function() {
console.log("Check!");
}
};
someObject.start();
Run Code Online (Sandbox Code Playgroud)
这本书确实展示了一个带有计时器的例子:
var timer = {
start: function() {
var self = this;
window.setInterval(function(){self.tick();}, 1000);
},
tick: function() {
console.log('tick!');
}
};
Run Code Online (Sandbox Code Playgroud)
在带有timer对象的示例中,它为self调用内部函数,因此这意味着我应该使用self来调用内部函数,或者这是使用对象执行此操作的正确方法吗?还是最佳实践?提前致谢.
var someObject = {
start: function() {
var self = this;
self.check();
},
check: function() {
console.log("Check!");
}
};
someObject.start();
Run Code Online (Sandbox Code Playgroud)
JavaScript名称是词法范围的,因此每当在脚本中遇到名称(变量)时,JavaScript运行时必须搜索定义函数的范围.
在定义时,这个功能:
start: function() {
check();
}
Run Code Online (Sandbox Code Playgroud)
无法访问check
其外部作用域中的任何函数.声明self
和绑定它this
是一种技术,用于处理在JavaScript 中引用当前对象(因为示例代码使用window.setInterval
)的(有点有趣)错综复杂.
要引用当前对象中的函数,只需使用即可this
.
var someObject = {
start: function() {
this.check();
},
check: function() {
console.log("Check!");
}
};
Run Code Online (Sandbox Code Playgroud)