【问题标题】:Define dynamic function in javascript在javascript中定义动态函数
【发布时间】:2021-08-25 17:52:19
【问题描述】:

我有SetUpTest() 方法,函数名称将通过获取窗口对象生成脚本的on-loadtestShieldVal.js_name 是可变的,

testShieldVal = window.testObject || {};

SetUpTest = testShieldVal.js_name+"SetUp";

function SetUpTest() {
  new atoShieldVal.js_name.OnloadCallback(grecaptcha);
}

如何有效地用动态名称定义这个函数?

【问题讨论】:

  • 这似乎是一个 XY 问题;更简单的解决方案是将函数放在带有键的对象中。
  • 什么是atoShieldVal.js_name的数据类型是什么?
  • @trincot 函数体可以忽略,我只需要动态获取函数名,因为它会随着窗口对象的变化而变化。 testShieldVal.js_name = "login"; 比如说function SetUpTest() { return "testing"; }
  • 为什么不在testShieldVal 上定义该函数?就像testShieldVal.setup = function () { return "testing"; }; 一样,动态函数名称总是一个坏主意。

标签: javascript typescript dynamic-loading window-object


【解决方案1】:

如果我正确理解您的问题,您正在寻找使用动态名称定义函数。

在这种情况下,您应该使用 window[functionName] = function() { ... } 将方法添加到 window 对象

这会导致:

testShieldVal = window.testObject || {};

SetUpTest = testShieldVal.js_name+"SetUp";

window[SetUpTest] = function {
  new atoShieldVal.js_name.OnloadCallback(grecaptcha);
}

window.testObject.js_name 是“演示”时,您的函数可以通过DemoSetUp() 调用。这将自动在 window 对象中查找具有该名称的方法。

【讨论】:

    猜你喜欢
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 2019-10-25
    相关资源
    最近更新 更多