2013-07-31 25 views
1

我有必要做這樣的事情:包裝方法了在JavaScript對象

<script src="apiWrapper.js"></script> 
<script> 
    apiWrapper.init('api_key'); 
    apiWrapper.doSomethingElse(); 
</script> 

從本質上講,在一個頁面中的單樣式對象,我可以添加方法和屬性也和具有可從任何地方在頁面內。

這樣做的最好方法是什麼?

+0

可能重複[實現在JavaScript中單最簡單/乾淨的方式?(http://stackoverflow.com/questions/1479319/simplest-cleanest-way-to-implement-singleton-in-javascript) –

+0

對於像這樣的模式,如果你必須在隨後的調用中檢查init狀態,這可能是一個痛苦,所以我個人更喜歡'var myApi = ApiWrapper.init(apikey);' –

+0

是否有可能超越單身想法。你不能只聲明一個包含你需要的屬性的全局對象嗎? – Splendiferous

回答

3

您可以使用此方法(它給你有私人性質/功能的一種方式):

var apiWrapper = apiWrapper || (function() { 

    /* private functions here */ 
    var privateFunction = function() { 
    } 

    /* public functions here */ 
    return { 
    init: function (opts) {}, 
    doSomethingElse: function() {} 
    }; 
})(); 
1

我用這個結構,我的劇本太:

apiWrapper.js:

var apiWrapper = apiWrapper || {}; 

apiWrapper = { 
    doSomethingElse: function() { 

    }, 
    init: function(options) { 

    } 
}; 

如果你想做功能鏈接(如jQuery),只需return this;在你想要的功能的末尾連鎖。的

0
<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>