0

こんにちは、私はオブジェクト リテラル パターンを使用していくつかのコードを書いています。値を返す関数があります。

'currentLocation': function() {
    var cL = 0;
    return cL;
    },

次に、次のような別の関数から変数 'c​​L' を更新する必要があります。

teamStatus.currentLocation() = teamStatus.currentLocation() + teamStatus.scrollDistance();

この部分は別の関数の一部ですが、次のエラーが返されます:無効な割り当ての左側

この方法で変数を更新することはできないと思います。誰かがより良い方法を提案したり、正しい方向に向けたりすることができます。

どんな助けでも大歓迎です。

私がやろうとしていることを強調するために、さらにコードを追加します。

'currentLocation': function() {
    var cL = 0;
    return cL;
    },
'increaseTable': function() {
    if (teamStatus.currentLocation() <= teamStatus.teamStatusTableHeight() ) {
        teamStatus.currentLocation = teamStatus.currentLocation() + teamStatus.scrollDistance();
        $("#tableTrackActual").animate({scrollTop: (teamStatus.currentLocation)});
        $("#tableMembers").animate({scrollTop: (teamStatus.currentLocation) });
        //console.log(teamStatus.currentLocation());
        teamStatus.buttonRevealer();
    }
}

ご覧のとおり、recreaseTable は currentLocation の値を更新する必要があります。これにより、私が達成しようとしていることをより明確にすることができます。

4

3 に答える 3

1

teamStatus.currentLocation() =関数を呼び出してteamStatus.currentLocation戻り値に割り当てようとする を書いています。それは有効ではありません。あなたはただ欲しいteamStatus.currentLocation =- 関数呼び出しはありません。

于 2010-11-19T11:17:28.020 に答える
0

関数内の変数は、その関数 (およびその中で定義されているすべての関数) に対して完全にプライベートです。一連のプライベート変数を共有する多数の関数を作成する必要がある場合は、クロージャーを使用してそれを行うことができます。例えば:

var Thing = (function() {
    var thingWideData;

    function getData() {
        return thingWideData;
    }

    function setData(newData) {
        thingWideData = newData;
    }

    return {
        getData: getData,
        setData: setData
    };

})();

それが行うことは、匿名クロージャーに含まれる完全にプライベートな変数を取得および設定するために使用できる関数Thingを持つオブジェクトをgetData作成することです。このパターンの詳細については、こちらこちらを参照してください。ただし、後者はプライベート データよりもプライベート メソッドに関するものです。setData thingWideData

于 2010-11-19T11:14:13.820 に答える
0

コードが生成するものは次のとおりです。

0 = 0 + <some number>

どの変数を更新しますか? cL? 関数内で宣言しているため、外部から値を代入することはできません。コードの残りの部分によっては、次のようにしたほうがよい場合がありますgetters and setters

var object = {
    _cL = 0,
    get currentLocation() {
        return this._cL;
    },
    set currentLocation(value) {
        this._cL = value;
    }
}

次に、次のことができます。

teamStatus.currentLocation = teamStatus.currentLocation + teamStatus.scrollDistance();

アップデート:

IE に関して:currentLocation実際には単なる数値である必要がある場合は、それをプロパティとして宣言するだけで十分な場合があります。

var obj = {
    currentLocation: 0
}
于 2010-11-19T11:19:18.050 に答える