JavaScriptでクラスをコーディングしましたが、プライベート関数内のパブリックプロパティの1つを変更しようとしています。ここでJavascriptプライベート関数からパブリックプロパティを変更
は、私のコードの例です:
MyClass = function(callback){
this.tabs = [];
var tabs_callback = function(){};
this.setTabsCallback = function(callback) {
tabs_callback = callback;
}
var _doStuff = function(callback) {
// doing stuff
this.tabs = [1, 2, 3];
console.log("Inside doStuff");
console.log(this.tabs);
tabs_callback();
}
this.doStuff = function() {
_doStuff();
}
}
var myObject = new MyClass();
myObject.setTabsCallback(function() {
console.log("Inside callback");
console.log(myObject.tabs);
});
myObject.doStuff();
そして、ここでは、私は、コンソールで得るものです:
Inside doStuff
[ 1, 2, 3 ]
Inside callback
[]
なぜ私は、コールバック関数からの私の変更を見ることができないのですか?
の範囲を「これ」。 'MyClass'関数の上に(おそらく' this.tabs = []; 'の上にある)変数' var self = this; 'を作り、' this'の代わりに 'self'を使います。公共の財産にアクセスする。 – jonhopkins
すごい!あなたは正しい、それは働いた!どうもありがとうございました –