私はこのコードを持っています(JSFiddle)
var OBJ = function(){
var privateVar = 23;
var self = this;
return {
thePrivateVar : function() {
return privateVar;
},
thePrivateVarTimeout : function() {
setTimeout(function() { alert(self.thePrivateVar()); } , 10);
}
}
}();
alert(OBJ.thePrivateVar());
OBJ.thePrivateVarTimeout();
これは私が抱えている実際の問題を抽象化したものです。
OBJ.thePrivateVarTimeout()つまり、呼び出しが待機10してからalert23(他の公開されたメソッドを介してアクセスするようにしたい)を使用することを期待します。
ただしself、正しく設定されていないようです。設定していると、関数への参照self = thisではなく、グローバルオブジェクトへの参照であるように見えます。thisどうしてこれなの?
thePrivateVarTimeoutパブリックメソッドに他のパブリックメソッドを呼び出させるにはどうすればよいthePrivateVarですか?