0

大規模な JavaScript プロジェクトがあり、グローバル スコープを回避するために名前空間にカプセル化することを考えています。私が読んだことから、グローバルスコープを汚染しない方が良いです。これを行おうとすると、私のコードはどこを見ても「これ」で散らかってしまいます。グローバル変数の名前が一意であることを確認できるのに、なぜこれを行う必要があるのでしょうか。

$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) }
    }
};

「これ」のように理解するのは非常に難しく、しゃれは意図されていません!

編集:この質問はもともと Closure という言葉を使用していましたが、Namespace に変更されました。

4

2 に答える 2

0

これを回避するには、線に沿ってクロージャを使用します

var $m = {Layer:{}};

(function(exports) {

    var c = null;
    var total = null;

    function update() {
        c = 0;
        total = db.length;
        ...
    }

    exports.update = update;
})($m.Layer);
于 2013-08-25T21:47:32.063 に答える