簡體   English   中英

節點JS模塊,如何在模塊中使用本地功能

[英]Node JS Module, How can I use local function in module

我想知道如何在模塊中訪問局部函數。

在calc模塊中:

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;

這取決於您如何調用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));

原因是,如果將verify()作為未綁定函數調用, this它將變得不確定。 如果出於某種原因您想將verify()調用為未綁定函數,則可以使用bind()

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

其他方法是不使用this來重寫calc.js模塊:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM