2015-09-13 25 views
1

如何讓全局對象myLib同時爲需要參數並返回布爾值的庫樣式函數(true/false),我們稱之爲容器爲其他,公衆可訪問的方法,像這樣:返回值並提供對內部定義方法的訪問的函數

window.myLib = (function(w){ 

    //... 
    function on(arg, callback){ 
    } 

    return function(arg1, arg2){ 
     //returns true or false, based on calculation on arg1, arg2... 
    } 

})(window)   

myLib('something', 'somethingother')// will return true or false   
myLib.on('somecondition', function(){})// note the on() method-that's what I'm trying to accomplish   

或者我應該問,這是可能的嗎?

回答

1

功能,讓您可以真正方法添加到他們。 From mdn

Function構造函數創建一個新的Function對象。在JavaScript 中,每個函數實際上都是一個Function對象。

window.myLib = (function(window){ 
    function myLib(a, b) { 
     console.log(a, b); 
    } 

    myLib.method1 = function (a) { 
     console.log(a); 
    } 

    myLib.method2 = function (a, b) { 
     console.log(a + b); 
    } 

    return myLib; 

})(window); 

現在你可以使用這兩個功能,和連接方法:

myLib(1, 2);

myLib.method1(5);

myLib.method2(5, 3);

1

有可能像在JavaScript對象是這個

window.myLib = (function(w){ 

    //... 
    function on(arg, callback){ 
    } 

    function main(arg1, arg2){ // main is an arbitrary name with no significance 
     //returns true or false, based on calculation on arg1, arg2... 
    } 
    main.on = on; 
    return main; 

})(window)  
相關問題