【问题标题】:javascript: how to execute a function stored in a variablejavascript:如何执行存储在变量中的函数
【发布时间】:2020-08-18 15:48:36
【问题描述】:

我需要在一个对象上存储一个函数及其参数,也就是说:

function myFunction(params) {
   console.log('Params',params);
}

const obj = {method: myFunction, params: [params]};

我怎样才能再次构造这个函数及其参数,以便从obj 中的内容执行它?

【问题讨论】:

  • 请注意,const obj = {method: myFunction, params: [params]); 末尾的 ; 之前的 )(右括号)应该是 }(右大括号)。
  • “构造”是什么意思?

标签: javascript parameters


【解决方案1】:

我不确定你所说的“构造”是什么意思,但你可以这样称呼它:

obj.method(obj.params);

现场示例:

function myFunction(params) {
   console.log('Params',params);
}

const obj = {method: myFunction, params: ["example"]};
// Note: Fixed typo −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^

obj.method(obj.params); // Shows: Params example

【讨论】:

  • 哦,那是一个快速的答案......我有这样的东西,但它失败了......谢谢,这解决了我的问题。
【解决方案2】:

更漂亮,但需要 ES6

const  myFunction = (params)  => {
   console.log('Params',params);
}

现在您可以按照您的方式将其放入您的对象中。 你可以通过使用来执行它

obj.method(obj.params)

【讨论】:

    【解决方案3】:

    使用闭包存储参数然后返回另一个函数怎么样?那么您就不必将它们存储在对象中,如下所示:

    function createClosure(params) {
      return function {
        console.log(`Params: ${params}`);
      }
    }
    

    或在 ES6 语法中:

    const createClosure = (params) => () => {
      console.log(`Params: ${params}`);
    };
    

    在这两种情况下,您都可以像这样存储和调用函数:

    const myClosure = createClosure(params);
    
    // then somewhere else
    myClosure(); // prints params
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2018-12-17
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 2021-05-14
      相关资源
      最近更新 更多