将函数存储为localStorage中的变量

问题描述 投票:1回答:1

我正在尝试将功能存储在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”不是一个函数。是否有可能解决这个问题,或者我正在尝试做什么不可能?我想这样做是为了清楚地分离功能和组件(以避免代码太长,并且因为我在不同的组件中使用相同的功能),但它没有必要

javascript reactjs
1个回答
0
投票

您可以做的是将函数定义存储为localStorage中的字符串,然后使用eval方法对其进行评估,但这并不意味着您正在存储实际函数,您只是存储一个字符串,之后您将其作为JavaScript运行使用eval的代码。

EG

var c = console;

localStorage.setItem("itm", "(function(){ return c})()");

eval(localStorage.getItem("itm")).log("Hello!");

在上面的例子中,c对象必须可以从你运行eval的地方访问,否则它将无法工作,因为它只是一个字符串。

© www.soinside.com 2019 - 2024. All rights reserved.