returns 值并提供对内部定义方法的访问的函数

Function that returns value and provides access to inside-defined methods

如何让全局对象 myLib 同时成为接受参数和 returns 布尔值 (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        

或者我应该问,这可能吗?

可以这样

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)      

javascript 中的函数是对象,因此您实际上可以向它们添加方法。来自 mdn:

The Function constructor creates a new Function object. In JavaScript every function is actually a Function object.

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);