Javascript 如何在JS对象定义中调用先前定义的函数?
如果您尝试运行此JS代码段Javascript 如何在JS对象定义中调用先前定义的函数?,javascript,Javascript,如果您尝试运行此JS代码段 module.exports = { add: function(a, b) { return a + b; }, subtract: function(a, b) { return add(a, -b); } } 您将得到一个错误,说明add未定义。这同样适用于: module.exports = { add: function(a, b) { return a + b; }, sums: { two_and_three: add(2,3)
module.exports = {
add: function(a, b) { return a + b; },
subtract: function(a, b) { return add(a, -b); }
}
您将得到一个错误,说明add
未定义。这同样适用于:
module.exports = {
add: function(a, b) { return a + b; },
sums: {
two_and_three: add(2,3);
}
}
以这种方式调用前面提到的函数的最佳方式是什么?您应该使用
此
,如下所示:
module.exports = {
add: function(a, b) { return a + b; },
subtract: function(a, b) { return this.add(a, -b); }
}
对于第二个用例,您需要以下内容:
module.exports = {
add: function(a, b) { return a + b; },
sums: {
two_and_three: function() { return module.exports.add(2,3); }
}
}
module.exports = {
add: function(a, b) { return a + b; },
subtract: function(a, b) { return this.add(a, -b); }
}
了解各种情况将有助于:
函数的调用方式决定函数的上下文,可以使用函数内部的'this'
关键字访问该上下文
现在来看看你的代码:
module.exports = {
add: function(a, b) { return a + b; },
subtract: function(a, b) { return add(a, -b); }
}
我们将按以下方式调用减法函数:
module.exports.subtract(1, 3);
这里使用方法调用模式。这意味着减法函数中的此
将引用减法的父对象(module.exports
),该对象还包含add
函数。因此,可以使用this访问add
函数。在减法函数中添加,如下所示:
module.exports = {
add: function(a, b) { return a + b; },
sums: {
two_and_three: function() { return module.exports.add(2,3); }
}
}
module.exports = {
add: function(a, b) { return a + b; },
subtract: function(a, b) { return this.add(a, -b); }
}
对于第二种情况,如果有求和,则可以使用的。二和三作为一个函数,或者如果需要求和作为结果,则可以这样做:
module.exports = {
add: function(a, b) { return a + b; }
};
module.exports.sums = {
two_and_three: module.exports.add(2,3),
three_and_four: module.exports.add(3,4)
};
或者,建议使用其他一些方法来访问父对象的同级/属性
希望这有帮助:)添加
未在该范围内定义。它被定义为对象中的键,但键不是变量定义。@4castle感谢您的澄清!