[英]Node js using “this” from function call within module.exports
我正在从module.exports
函数中调用本地函数。 如何访问this
对象的exports
?
exports.myVar = 'foo'
exports.myFunc = function() {
localFunc()
}
function localFunc() {
console.log(this.myVar) //Undefined
}
我曾尝试使用localFunc().bind(this)
但这也不起作用。 任何帮助表示赞赏!
这就是我所做的:
function localFunc() {
const self = exports;
console.log(self.myVar);
}
exports.myVar = 'foo';
exports.myFunc = function () {
localFunc();
}
你可以试试这个:
var data = module.exports = {
myVar: 'foo',
myFunc: function() {
localFunc();
}
}
function localFunc() {
console.log(data.myVar);
}
两种方法可以解决您的问题。
首先:
exports.myVar = 'foo'
exports.myFunc = function() {
that = this;
localFunc(that)
}
function localFunc(that) {
console.log(that.myVar) //foo
}
第二
exports.myVar = 'foo'
exports.myFunc = function() {
localFunc()
}
localFunc = ()=> {
console.log(this.myVar) //foo
}
只需使用exports
。 或者将myVar
声明为一个变量,将其分配给导出并为localFunc
围绕它创建一个闭包。
this
只有在您进行事件绑定和/或创建对象时才真正有意义。
localFunc.bind( this ) 只返回一个新函数,它是 localFunc 函数,但是this绑定到括号中的任何内容。 您需要将新函数(由 localFunc.bind 返回)实际分配回 localFunc。 下面是两个简单的例子:
exports.myVar = 'foo';
exports.myFunc = function() {
localFunc = localFunc.bind(this);
localFunc();
};
function localFunc() {
console.log(this.myVar);
}
或者:
exports.myVar = 'foo';
exports.myFunc = function() {
localFunc();
};
function localFunc() {
console.log(this.myVar);
}
localFunc = localFunc.bind(exports);
第二个选项可能比第一个更好,因为在第一个示例中,每次调用 exports.myFunc 时都必须重新绑定函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.