Javascript 创建可以用点表示法调用的子函数

Javascript 创建可以用点表示法调用的子函数,javascript,function,Javascript,Function,背景: 在这个问题的基础上。我现在想创建一个函数类,它可以在点表示法中使用点表示法调用(这甚至可能不可能)。首先是我目前使用的一些方法: 下面是我如何修改JavaScript数学函数的示例: Math.mean = function(numericArray){ if(Math.isNumericArray(numericArray)){ return math.mean(numericArray); } return false; } 仅供参考,小写的

背景: 在这个问题的基础上。我现在想创建一个函数类,它可以在点表示法中使用点表示法调用(这甚至可能不可能)。首先是我目前使用的一些方法:

下面是我如何修改JavaScript数学函数的示例:

Math.mean = function(numericArray){
    if(Math.isNumericArray(numericArray)){
        return math.mean(numericArray);
    }
    return false;
}
仅供参考,小写的math.mean()调用是对数学库的调用:,而isNumericArray只是一个验证器,用于确保传入的是数字数组

然后我像这样导出它:

module.exports.mean = exports = Math.mean;
所以Jest可以在我的单元测试中看到它

我的实际问题: 我想做的是创建一个名为Math.acs的高级“类”,这样您就可以使用Math.acs对其进行调用。然后它会有子函数(例如:foo()&bar()),所以您可以这样调用它们:Math.acs.foo(data);或Math.acs.bar(数据)

我试图:

这不起作用(CLI在Math.acs下面看不到任何内容),我还尝试了函数中的直接函数,但这些函数也不起作用


如果这是不可能的,我不会死,但这将使acs模块中所需的六个左右的功能集中化,并且更易于维护。如果不可能,我可以用与上面相同的方法编写各个数学模块。

您需要获取一个带有属性的函数并返回此函数

Math.acs = (function(data) {
    function f() {};
    f.foo = function (data) { console.log('hi mom'); };
    f.bar = function (data) { console.log("hi dad"); };
    return f;
})();
Math.acs = (function(data) {
    function f() {};
    f.foo = function (data) { console.log('hi mom'); };
    f.bar = function (data) { console.log("hi dad"); };
    return f;
})();