代码之家  ›  专栏  ›  技术社区  ›  MirceaKitsune

JavaScript:将函数调用存储在变量/对象中

  •  1
  • MirceaKitsune  · 技术社区  · 1 年前

    我想知道是否有一种简单的方法可以在对象内部定义函数调用。我知道 eval() 可以达到这个目的,但如果可能的话,我会尽量避免。这是我的场景:

    function my_function(val) { console.log("The value is " + val) }
    const my_object = {"a": "nothing", "b": 0, "c": my_function("this")}
    my_object.c();
    

    我希望你打电话给我 my_object.c() ,它运行 my_function() 在给定的参数下。可以理解的是 c 当脚本启动时,从函数的返回中获取其值。

    按预期工作的是将其定义为 "c": function() { my_function("this") } 相反:它有效,但看起来真的很难看。有没有一种更简单的写法,以同样的方式工作,但只包含被调用函数的名称?

    1 回复  |  直到 1 年前
        1
  •  1
  •   Roko C. Buljan    1 年前

    我想你想做的是 bind

    const my_object = {
      c: my_function.bind(this, 'this'),
    };
    

    另请参阅: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind