繁体   English   中英

Node js 使用 module.exports 中函数调用中的“this”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM