我正在尝试将功能存储在localStorage中
class Data extends Component {
constructor(props);
var func = {
f1 : this.f1.bind(this),
f2 : this.f1.bind(this)
}
localStorage.setItem("method",func);
f1(var id){
console.log("F1" : id);
}
f2(var id){
console.log("F2" : id);
}
}
class App extends Component{
constructor(props){
super(props);
var m = localStorage.getItem("method");
m.f1(1);
m.f2(3);
}
我得到错误“m.f1”不是一个函数。是否有可能解决这个问题,或者我正在尝试做什么不可能?我想这样做是为了清楚地分离功能和组件(以避免代码太长,并且因为我在不同的组件中使用相同的功能),但它没有必要
您可以做的是将函数定义存储为localStorage
中的字符串,然后使用eval
方法对其进行评估,但这并不意味着您正在存储实际函数,您只是存储一个字符串,之后您将其作为JavaScript运行使用eval
的代码。
EG
var c = console;
localStorage.setItem("itm", "(function(){ return c})()");
eval(localStorage.getItem("itm")).log("Hello!");
在上面的例子中,c
对象必须可以从你运行eval
的地方访问,否则它将无法工作,因为它只是一个字符串。