我一直使用以下模式:
;(function(ns){
var _str = 'hello';
ns.hello = function(){
console.log(str)
}
})(this.app = this.app || {});
app.hello(); // logs 'hello' to the console
我试图做更多OO类型的事情,并希望重用这种模式。我提出的以下内容与上述内容非常相似。
var App = (function(){
var _str= 'hello';
function App(){}
App.prototype.hello = function(){
console.log(_str);
}
return App;
})();
var instance = new App();
instance.hello(); // logs 'hello' to the console
下一个变体使用"""想法,但我没有看到它在这个用例中的实用性:
var App = (function(){
var that = this;
this._str= 'hello';
function App(){}
App.prototype.hello = function(){
console.log(that._str);
}
return App;
})();
var instance = new App();
instance.hello(); // logs 'hello' to the console
在尝试以OO方式编写时,将事物包装在闭包中是否值得?上述构造函数的任何缺点?我应该专注于学习不同的模式吗?