我在module.exports
函数中调用本地函数。如何访问exports
this
对象?
exports.myVar = 'foo'
exports.myFunc = function() {
localFunc()
}
function localFunc() {
console.log(this.myVar) //Undefined
}
我尝试过使用localFunc().bind(this)
,但这也不起作用。任何帮助表示赞赏!
答案 0 :(得分:1)
这就是我的所作所为:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
ArrayList aList = new ArrayList() { 1 , 2, 1 };
IEnumerable<int> result = aList.ToArray().ToList().Cast<int>().Where(v => v != 1).ToList();
foreach(int item in result)
{
Console.WriteLine(item);
}
}
}
答案 1 :(得分:1)
你可以试试这个:
var data = module.exports = {
myVar: 'foo',
myFunc: function() {
localFunc();
}
}
function localFunc() {
console.log(data.myVar);
}
答案 2 :(得分:1)
两种方法可以解决您的问题。
第一个:
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
}
答案 3 :(得分:0)
只需使用exports
即可。或者将myVar
声明为变量,将其分配给导出并为localFunc
创建一个闭包。
this
只有在您绑定事件和/或创建对象时才有意义。
答案 4 :(得分:0)
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);
第二个选项可能比第一个更好,因为在第一个示例中,每次调用export.myFunc时都必须重新绑定该函数。