代码之家  ›  专栏  ›  技术社区  ›  Richard

Node JS模块,如何在模块中使用本地函数

  •  0
  • Richard  · 技术社区  · 7 年前

    我想知道如何访问模块中的本地函数。

    在计算模块中:

    var calc = {};
    calc.add = function(a,b){
        return a+b;
    };
    
    calc.multi = function(a,b){
        return a*b;
    };
    
    module.exports = calc;
    

    但是,如果我添加了一些函数,请使用如下局部函数:

    calc.verify = function(a,b){
        return (this.add(a,b)) + (this.multi(a,b))
    };
    

    这工作不正常。 我想在我的模块中随时使用calc.add和calc.multi函数。

    我的代码有什么问题?

    编辑::

    var calc = {};
    calc.add = function(a,b){
        return a+b;
    };
    
    calc.multi = function(a,b){
        return a*b;
    };
    
    calc.verify = function(a,b){
        return (this.add(a,b)) + (this.multi(a,b))
    };
    
    module.exports = calc;
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Antonio Val    7 年前

    这取决于你打电话的方式 verify()

    假设您的模块被调用 calc.js ,这应该可以:

    const calc = require('./calc');
    console.log(calc.verify(1,2));
    

    这不起作用:

    const calc = require('./calc');
    const verify = calc.verify;
    console.log(verify(1,2));
    

    这也不是:

    const { verify } = require('./calc')
    console.log(verify(1, 2));
    

    原因是如果你打电话 验证() 作为未绑定函数, this 将变得未定义。如果出于某种原因你想打电话 验证() 作为未绑定函数,可以使用 bind() :

    const calc = require('./calc');
    const verify = calc.verify.bind(calc);
    console.log(verify(1,2));
    

    另一种方法是重写 计算.js 未使用的模块 :

    calc.verify = function(a,b){
        return (calc.add(a,b)) + (calc.multi(a,b))
    };