我有一个大型 JavaScript 项目,正在考虑将其封装在命名空间中以避免全局范围。根据我的阅读,最好不要污染全局范围。尝试执行此操作时,我的代码到处都是“this”。当我可以确保我的全局变量具有唯一名称时,我为什么要这样做?
$m.Timers.Layer = {
chunk: 3,
c: null,
total: null,
update: function() {
this.c = 0;
this.total = $m.db.length;
setTimeout(this.op1.bind(this), 0);
},
op1: function() {
var end = this.c + this.chunk;
if (end > this.total) { end = this.total }
for (this.c; this.c < end; this.c++) {
alert(this.c);
}
if (this.c != this.total) { setTimeout(this.op1.bind(this), 0) }
}
};
像“这个”这样理解起来要困难得多,没有双关语的意思!
编辑:这个问题最初使用了闭包这个词,并已更改为命名空间。