我试图将一些函数存储到数组中。我希望实现这样的目标:
class Store {
constructor(){
this.storage=[];
}
}
let store1=new Store();
let store2=new Store();
(function (store1) {
store1.storage.push({"func1":function () {func2();}})
})(store1);
(function (store2,store1) {
store2.storage.push({"func2":function () { console.log('func2');}})
let func2 = function () { console.log('func2');}
let func1= store1.storage[0].func1
// let func1= function () {func2();}
func1();
})(store2,store1);
问题在于它抛出了func2未定义的问题'因为我认为范围问题。
有没有办法保持这种代码结构或行为?我需要存储这样的函数。
答案 0 :(得分:1)
最简单的方法就是创建一个命名空间,如:
class Store {
constructor(){
this.storage=[];
}
}
let commons = {};
let store1=new Store();
let store2=new Store();
(function (store1) {
store1.storage.push({"func1":function () {commons.func2();}})
})(store1);
(function (store2,store1) {
store2.storage.push({"func2":function () { console.log('func2');}})
commons.func2 = function () { console.log('func2');}
commons.func1= store1.storage[0].func1
// let func1= function () {func2();}
commons.func1();
})(store2,store1);
我不确定您的确切用例,但也许您应该考虑将这些方法放在您的类中,或者以在同一范围内定义函数的方式重构代码?