我有必要做這樣的事情:包裝方法了在JavaScript對象
<script src="apiWrapper.js"></script>
<script>
apiWrapper.init('api_key');
apiWrapper.doSomethingElse();
</script>
從本質上講,在一個頁面中的單樣式對象,我可以添加方法和屬性也和具有可從任何地方在頁面內。
這樣做的最好方法是什麼?
我有必要做這樣的事情:包裝方法了在JavaScript對象
<script src="apiWrapper.js"></script>
<script>
apiWrapper.init('api_key');
apiWrapper.doSomethingElse();
</script>
從本質上講,在一個頁面中的單樣式對象,我可以添加方法和屬性也和具有可從任何地方在頁面內。
這樣做的最好方法是什麼?
您可以使用此方法(它給你有私人性質/功能的一種方式):
var apiWrapper = apiWrapper || (function() {
/* private functions here */
var privateFunction = function() {
}
/* public functions here */
return {
init: function (opts) {},
doSomethingElse: function() {}
};
})();
我用這個結構,我的劇本太:
apiWrapper.js:
var apiWrapper = apiWrapper || {};
apiWrapper = {
doSomethingElse: function() {
},
init: function(options) {
}
};
如果你想做功能鏈接(如jQuery),只需return this;
在你想要的功能的末尾連鎖。的
<script>
...
// create your singleton in the global scope
if(!("apiWrapper" in window))
window.apiWrapper = {};
...
// use your singleton object
apiWrapper.init = function() {...};
apiWrapper.prop = 123;
...
apiWrapper.init();
</script>
可能重複[實現在JavaScript中單最簡單/乾淨的方式?(http://stackoverflow.com/questions/1479319/simplest-cleanest-way-to-implement-singleton-in-javascript) –
對於像這樣的模式,如果你必須在隨後的調用中檢查init狀態,這可能是一個痛苦,所以我個人更喜歡'var myApi = ApiWrapper.init(apikey);' –
是否有可能超越單身想法。你不能只聲明一個包含你需要的屬性的全局對象嗎? – Splendiferous