javascript - 在函数中使用 eval 来替换图层名称上的前缀?

标签 javascript function coffeescript eval

我需要编写一个函数,向其传递一个字符串,它将用该字符串的内容替换其中的“前缀”一词。因此,每次我调用该函数并向其传递一个新字符串(即 alpha、beta 等)时​​,它将使用该键作为前缀来完全重建内部的所有层和事件。我怀疑我需要使用 eval,但我不太确定在这种情况下如何使用。

layoutViews = (prefix) ->
    prefix_layer1 = new Layer
        width: 100
        height: 100

    prefix_layer1.on Events.Click ->
        buttonActions()

layoutViews(alpha)
layoutViews(beta)

我正在使用 CoffeeScript,但也欢迎任何真正的 JS 想法。我意识到这个具体问题暗示我在项目中做了其他错误的事情,但这主要是出于我自己的好奇心,这是否可能。

最佳答案

所以你想要

function build(prefix) {
  window[prefix + "_hi"] = function() {
    alert("hi");
  };
}

像这样使用:

build("test");
test_hi();

Window 只是浏览器中的全局(!坏)元素,因此您可能会考虑分配给 this 而不是 window,具体取决于您的使用情况。

关于javascript - 在函数中使用 eval 来替换图层名称上的前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41726574/

相关文章:

function - 云调度程序突然给出 "INVALID_ARGUMENT"错误

javascript - Coffeescript - 方法链与函数参数 [2] 或使用函数而不是参数

javascript - 在 Coffeescript 中重用 ajax 变量

javascript - EmberJS - 注册预编译的 Handlebars 模板

javascript - html 添加使用 arg obj 调用 selfFunction 的链接

javascript - 在运行函数之前定义变量值

javascript - 基于变量创建Javascript函数,其中更改变量不会更改函数

javascript - 如何使用另一个数组作为模板对数组数据进行排序?

javascript - 当我 setState() 时,FlatList 项目不更新

json - Handlebars block 助手 : each with sort