私はTabList
のこの定義があります:私はこれを呼び出すときしかし、JavaScriptのスコープの混乱
MyApp.TabList = function (selector) {
var private = {
$list: $(selector),
tabs: []
};
this.add = function (tab) {
private.tabs.push(tab);
};
};
を、そしてthis.add
の体内に侵入、private
はローカルスコープには表示されません。
MyApp.tabs = new MyApp.TabList("#tabs");
$("#tab-add").click(function() {
MyApp.tabs.add(new MyApp.Tab("title"));
});
private
はオブジェクトの内部に保持されませんか?
このコードが上記のようにスタンドアロンで動作する場合、私は何かを見逃している可能性があります—私は実証的な目的のために私ができる限りベストを尽くそうとしました。
@Agile一般的に、 'return this;'でコンストラクタ関数を終了したいとします。私はそれが違いをもたらすとは思わないが、それは(私が聞いたことから)良い練習である。 –
@Agile 'private'変数は' add'関数のローカルスコープにあるとは限りません。外側のスコープ( 'TabList'コンストラクタ関数のスコープ)にあります。 –
@ŠimeVidas:ハァッ?どうしてそうするか?あなたが 'new'を使っているのであれば、決してそれをする必要はありません。あなたは 'new'キーワードなしで動作させる場合にのみこれを行います。 –