为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

UYOU 2021-05-04 21:09:37
背景: 基于有关如何公开Jest进行单元测试的库的问题。现在,我想创建一个可以在点表示法内用点表示法调用的函数类(这甚至是不可能的)。首先,我目前正在使用一些方法:这是我如何修改JavaScript Math函数的示例:Math.mean = function(numericArray){    if(Math.isNumericArray(numericArray)){        return math.mean(numericArray);    }    return false;}仅供参考,小写的math.mean()调用是对数学库的:https ://mathjs.org/,isNumericArray只是一个验证器,以确保传入的是数字数组。然后我将其导出为:module.exports.mean = exports = Math.mean;因此Jest可以在我的单元测试中看到它。我的实际问题: 我想做的是创建一个名为Math.acs的上层“类”,因此您可以使用Math.acs对其进行调用。然后它将具有子功能(例如:foo()和bar()),因此您可以这样称呼它们:Math.acs.foo(data); 或Math.acs.bar(data);我试图将它们封装到IIFE中:Math.acs = (function(data) {    function foo(data){        console.log('hi mom');    };    function bar(data){        console.log("hi dad");    }    return bar;})();哪个不起作用(CLI在Math.acs下面看不到任何东西),我还尝试了在不起作用的函数内部使用直接函数。如果这不可能的话,我不会死,但是它将使acs模块中所需的一半左右功能集中并且易于维护。如果不可能,我可以按照上面显示的方式编写各个数学模块。
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

您需要使用具有属性的函数并返回此函数。


Math.acs = (function(data) {

    function f() {};

    f.foo = function (data) { console.log('hi mom'); };

    f.bar = function (data) { console.log("hi dad"); };

    return f;

})();


查看完整回答
反对 回复 2021-05-13
  • 1 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信