2010-11-19 7 views
0

こんにちはみんな、私は値を返す機能を持って、オブジェクトリテラルのパターンを使用していくつかのコードを書いています:私はその後、別の関数から変数「CL」を更新する必要が変更VAR

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

をこのような:

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

あなたはincreaseTableがcurrentLocationの値を更新する必要があります見ることができるように - これは私が達成しようとしているものに、より多くの光を当てるのに役立ちます。

答えて

0

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

var Thing = (function() { 
    var thingWideData; 

    function getData() { 
     return thingWideData; 
    } 

    function setData(newData) { 
     thingWideData = newData; 
    } 

    return { 
     getData: getData, 
     setData: setData 
    }; 

})(); 

は匿名の閉鎖によって含まれる完全にプライベートthingWideData変数を取得することで利用可能なgetDatasetData機能を、持っているThingオブジェクトを作成し、設定しています。このパターンの詳細は、herehereですが、後者は私的なデータよりも私的な方法です。

1

teamStatus.currentLocation() =と書いてありますが、これは関数teamStatus.currentLocationを呼び出し、戻り値に割り当てようとします。それは有効ではありません。ちょうどteamStatus.currentLocation = - 関数呼び出しが必要なだけです。

+0

乾杯チャックはあなたが正しいテストを受けていると思って、答えが正しいとマークします。あなたはお嬢さん – jonnyhitek

+0

+1 iow。do - > 'currentLocation':0 – BGerrissen

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 
} 
+0

注:IE6-8はゲッター/セッターをサポートしていません。 – BGerrissen

+0

こんにちはcurrentLocationはちょうど値である必要がありますが、私はその値を更新することができる必要があります – jonnyhitek

+0

@ジョナサンp:次に、関数ではなく数字であることを宣言することができます:) –

関連する問題