3

私は JavaScript の初心者であり、Java のバックグラウンドを持っています。非常に単純な JavaScript アプリケーションを作成しようとしていますが、いくつか問題があります。私が抱えている問題は、関数内の関数のスコープに関係しています。

こんな構造にしたい

function codeArray() {
    function create() {
        addElement( prop1, prop2,) {
            //create an element
        }

        function traverse(object) {
            //recursively go through some nested list data structure
            addElement(asd, 4534);
        }
    }

    function deleteElement() {
        //delete a single element from an array
    }

    print() {
        //print array;
    }
}

something.click(function() {
    codeArray.create();
    codeArray.print();
});

したがって、私が直面している問題は、codeArray 内にネストされた関数のスコープが原因で、codeArray の外部から関数にアクセスできないためです。ラッパーの codeArray 関数を取り除くだけでは、カプセル化の悪い習慣になるでしょうか? 誰かがこれを行う方法についてより良い書き直しを提案できますか?

前もって感謝します。

4

1 に答える 1

7

あなたはほとんど正しいです。代わりにオブジェクトを使用する必要があります。

codeArray = {
    create:function() {
       // ...
    },
    // ...
    print:function() {
       // ...
    }
};

次に、次のように呼び出すことができます。

codeArray.create();
codeArray.print();
于 2013-04-23T18:32:12.677 に答える