我無法學習模塊模式,javascript模塊模式上下文問題
什麼是正確的方式能夠從安裝程序中運行我的函數getData目前它是未定義的。
https://jsbin.com/movaleyedo/edit?html,js,console,output
var module = (function(){
var Setup = function(){
this.getData = function(){
return "data";
};
this.init = function(){
this.getData(function(err,data){
alert(data);
});
};
};
return {
init: new Setup().init
};
})();
module.init();
"TypeError: this.getData is not a function
at Object.init (movaleyedo.js:8:12)
at movaleyedo.js:17:8
at https://static.jsbin.com/js/prod/runner-3.35.9.min.js:1:13891
at https://static.jsbin.com/js/prod/runner-3.35.9.min.js:1:10820"
我創建了第二個例子,爲什麼我不明白是怎麼回事。
var Module = (function(){
var app = this;
var One = function(){
this.one = function(){
return 1;
}
this.getNumbers = function(){
return this.one();
}
};
var Two = function(){
this.getNumbers = function(){
return 2;
}
this.two = function(){
app.one = new One;
console.log(app.one.getNumbers()); //doesnt break
console.log(this.getNumbers());//breaks
}
};
return {
init: new Two().two
};
})();
Module.two();
基本上裏面一(),我可以調用返回this.one()。
但內部的兩個()我不能叫this.getNumbers()
請相關的代碼添加到這個問題(內聯)。如果你需要運行某些東西,可以使用[Stack Snippets](https://blog.stackoverflow.com/2014/09/introducing-runnable-javascript-css-and-html-code-snippets/)。 – Whymarrh
'this'不是你想要的。 – SLaks