2017-07-18 69 views
2

我目前正在使用一些應該可以在全局訪問的常見方法公開全局對象,但是想要將其原型方法定義封裝在IIFE中,主要是爲了能夠使用庫別名。Javascript:暴露在IIFE中定義的全局對象

爲了實現我目前在IIFE作用域之外聲明全局對象,並在作用域內覆蓋一個新對象實例。

這使得創建一個新的實例不可能事後,我不在乎。並且有效地使全局對象可以全局訪問:

function CustomNamespace(){}; 
+function ($) {   
    CustomNamespace.prototype = { 
     constructor: CustomNamespace, 
     func1: function (args) { 
      // ... 
     }, 
     func2: function (args) { 
      // ... 
     }, 
     // ... 
    }; 
    CustomNamespace = new CustomNamespace(); 
}(window.jQuery || {}); 

// ... 

CustomNamespace.func1(); 

問題:這是否被認爲是不良做法或反模式?還是還有其他更「優雅」的做法? PS:我意識到這可能是一個微不足道的問題,但對於這個特殊情況還沒有找到任何答案。

回答

1

這不適合你嗎?

var CustomNamespace = function ($) { 
    function MyClass(){};   
    MyClass.prototype = { 
     constructor: MyClass, 
     func1: function (args) { 
      // ... 
     }, 
     func2: function (args) { 
      // ... 
     }, 
     // ... 
    }; 
    return new MyClass(); 
}(window.jQuery || {}); 

// ... 

CustomNamespace.func1(); 
+0

它呢,非常感謝你 – decksterr