我正在编写一个模块,该模块需要调用模块中的内部函数并利用构造函数中的变量。要在内部调用这些函数,我可以使用变量mycode
或使用关键字this
。但是,使用mycode
意味着使用全局变量,并且this
可以被我的部分函数覆盖。这是我模块结构的简化模型:
// app.js
const MyCode = require('mycode.js');
var mycode = new MyCode();
mycode.function1($(html));
// mycode.js
module.exports = class {
constructor() {
this.alertUrl = true;
}
function1(html) {
html.find('a').each(function () {
var url = $(this).attr('href');
this.function2(url); // this is now overridden by jquery
});
}
function2(url) { if (this.alertUrl) alert(url); }
}
我正在寻找一种类似于myModule.function2(url);
的解决方案,其中myModule
仅适用于模块内部的功能。
答案 0 :(得分:1)
您可以改用箭头函数,这样for (fragment in supportFragmentManager.fragments) {
if (fragment is SupportMapFragment) {
continue
} else if (fragment != null) {
supportFragmentManager.beginTransaction().remove(fragment).commit()
}
}
引用是从外部范围继承的,而不是由this
回调进行更改的:
each
另一个(不太优雅)的方法是在调用html.find('a').each((_, elm) => {
var url = $(elm).attr('href');
this.function2(url);
});
之前保存对实例的引用:
each
问题实际上与模块没有任何关系,仅与函数的调用上下文有关。
答案 1 :(得分:0)
您可以将异步功能与导出一起使用...
const function_name = async () => {
};
export default function_name ;