使用 JavaScript 变量作为函数名?

2024-04-09

我在 Javascript 中有以下代码:

jQuery(document).ready(function(){
    var actions = new Object();
    var actions;
    actions[0] = 'create';
    actions[1] = 'update';
    for (key in actions) {
        // Dialogs
        var actions[key]+Dialog = function(){
            $('#'+actions[key]+'dialog').dialog('destroy');
            $('#'+actions[key]+'dialog').dialog({
                resizable: false,
                height:600,
                width:400,
                modal: true,
                buttons: {
                    Cancel: function() {
                        $(this).dialog('close');
                    }
                }
            });
        };
    }
});

我想在循环中创建 2 个函数(createDialog 和 updateDialog)。我怎样才能做到这一点?在 PHP 中,有非常简单的 $$var。但我不知道如何在 JS 中使变量变量。

谢谢


像这样:

actions[key + "Dialog"] = function () { ... };

但是,由于 Javascript 函数通过引用捕获变量,因此您的代码将无法按预期工作。
您需要在单独的函数内部定义内部函数,以便每个函数都有一个单独的函数key变量(或参数)。

例如:

var actionNames = [ 'create', 'update' ];   //This creates an array with two items
var Dialog = { };    //This creates an empty object

for (var i = 0; i < actionNames.length; i++) {
    Dialog[actionNames[i]] = createAction(actionNames[i]);
}

function createAction(key) {
    return function() { ... };
}

你可以这样使用它:

Dialog.create(...);

EDIT

您试图使用多个与对话框相关的函数来污染全局命名空间。
这是一个坏主意;最好将函数组织到命名空间中。

如果你真的想污染全局命名空间,你可以这样做:

var actionNames = [ 'create', 'update' ];   //This creates an array with two items

for (var i = 0; i < actionNames.length; i++) {
    this[actionNames[i] + 'Dialog'] = createAction(actionNames[i]);
}

这将创建名为的全局函数createDialog and updateDialog.
在正常的函数调用中,this关键字指的是全局命名空间(通常是window目的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JavaScript 变量作为函数名? 的相关文章

  • 在图像加载之前显示替代文本来代替图像

    在图像加载之前 如何显示文本代替图像 因为在 HTML 网站上我有一个图像作为页面的标题 所以页面完全加载 标题图像稍后出现 h1 img src heading png alt Some nice heading here width 6
  • 如何按日期属性对对象数组进行排序?

    假设我有一个由几个对象组成的数组 var array id 1 date Mar 12 2012 10 00 00 AM id 2 date Mar 8 2012 08 00 00 AM 如何按日期元素从最接近当前日期和时间的日期开始对该数
  • nodeJS require.paths 解决问题

    我试图相对且神秘地需要一个文件 以下情况正在发生 这很有效 这表明 Users marcos Desktop Taper lib utils js myPath Users marcos Desktop Taper lib utils re
  • 带有路径连接器的 jQuery 可拖动小部件

    参考该图像 Block1 和Block2 都是可拖动的 我的问题是 如何在两个块之间制作红色链状连接器 要求是链条应该延伸到块被拖动的地方 请提供任何教程 学习材料的指示 谢谢 有许多 Jquery 插件可用于创建数据库可视化或流程图的连接
  • 是否可以实现异步跨域文件上传?

    有可能的 参见下文 首先我用这张图来解释一下异步文件上传可以实现 对不起 我已经关闭了我的一个域 该图像现在消失了 不过 这确实是一个很好的图像 这是在我发现 Stack Overflow 可以通过 Imgur 上传图像之前 正如您所看到的
  • 如何使事件 DOM 侦听器适应 Google Maps JavaScript API v3.35

    我曾经使用以下代码来捕获用户的 Enter 键事件 如果用户没有选择其中任何一个 即没有标记为 pac 的 pac item 则自动从自动完成结果 pac items 中选择第一个结果 项目选择 var input document get
  • Javascript:无法停止setTimeout

    我正在开发一个代理服务器检查器 并使用以下代码使用 setTimeout 函数以大约 5 秒的间隔启动请求 function check var url document getElementById url value var proxy
  • 从 JavaScript 字符串保存文件而不访问服务器

    如果我在 JavaScript 中有一个内存字符串 例如 Excel 或 PDF 格式 并且我想弹出一个保存对话框以便用户可以将这些字节保存到文件中 我将如何执行此操作 我试图避免回到服务器 如果我要返回服务器 我可以在响应中发送正确的 H
  • 如何根据 URL 路径添加 CSS 类?

    如何根据我所在的路径将 CSS 类添加到 div 中 包括如果我在其中包含 则不应该出现问题 div class popup ul li a href vs Example 1 a li li a href bod Example 2 a
  • 如何使用 Material UI 制作一个圆形复选框?

    我尝试匹配的设计要求复选框为圆形 我正在使用 Material UI 和 React 边框半径不起作用 因为实际图标的边框不是可见复选框的边框 我不能只使用像 Font Awesome 这样的东西 因为它需要实际检查和取消检查 Curren
  • CasperJS - 在网站上注册并验证 Gmail 上发送的邮件 - 对于 slimer 和 phantom -

    Edit 这是windows的行为 linux就失败了 首先 如果您使用 casper 成功导航 gmail 没有随机等待时间 从 20 秒到 5 分钟 请告诉我 我想在我们的网站上注册 然后使用 Gmail 自动验证我的注册 整个注册步骤
  • Chrome 的萤火虫

    谁能推荐一个类似于 Firebug 的不错的 Google Chrome 扩展程序 我确实看到这里有几个类似的问题 但答案似乎非常过时 Thanks It s built in Press Ctrl Shift I Or Tools gt
  • 如何使用环回设置 OAuth 2.0 服务器

    我想使用名为 Loopback component oauth2 的包使用 Loopback 设置 OAuth 2 0 服务器 文档在这里 https docs strongloop com display public LB OAuth
  • 在 Swift 中将函数作为参数传递

    在 iOS 8 中 我的以下功能按我的预期工作 func showConfirmBox msg String title String firstBtnStr String secondBtnStr String caller UIView
  • webpack 5 中是否可以让不同的入口包到不同的输出路径

    我正在使用 webpack 打包 google chrome 扩展 我想将文件夹结构保留在 dist 文件夹中 例如 我想将所有弹出资源打包在dist popup 这是我现在的配置 const path require path const
  • 找到两个移动物体的更好交点

    我想极大地优化我的算法之一 我将尽力以最好的方式解释它 主题 我们当时处于二维欧几里德系统中t 0 在这个系统中有两个对象 O1 and O2 O1 and O2分别位于点PA and PC O1移动于常数和已知点方向的速度PB 当物体到达
  • 我们可以使用 axios 的 onDownloadProgress 来加载 API 吗?

    我需要使用 axios 创建一个用于在 React 项目中加载 API 的进度条 我为此发现了 onDownloadProgress 函数 但我不知道我们是否可以使用它来获取诸如加载百分比之类的信息 或者它是否仅用于文件下载 所以我不确定我
  • 同步 jQuery 动画

    我正在尝试同时获得淡入 不透明度切换 和边框淡入 使用jquery 动画颜色 http www bitstorm org jquery color animation 同时开火 但我遇到了一些麻烦 有人可以帮忙查看以下代码吗 fn exte
  • 在 JavaScript 中添加事件的最佳方式是什么?

    我发现在 JavaScript 中设置事件有两种主要方法 直接在标签内添加一个事件 如下所示 a href do foo a 通过 JavaScript 设置它们 如下所示 a href do bar a 并在 a 中添加一个事件
  • 如何找到我的 typescript/react 模块的声明?

    我对前端技术非常 非常 陌生 特别是 React 和 TypeScript 当尝试做一件简单的事情 即使用反应组件时 我的问题出现了https github com ckeditor ckeditor5 https github com c

随机推荐

  • 使用 BindingExpression 调用具有 ValidationStep="UpdatedValue" 的 ValidationRule,而不是更新值

    我开始在 WPF 应用程序中使用 ValidationRules 但很困惑 我有以下简单的规则 class RequiredRule ValidationRule public override ValidationResult Valid
  • 正则表达式 PHP。减少步骤:受固定宽度 Lookbehind 限制

    我有一个正则表达式将用于匹配 users 标签 我使用 lokarround 断言 让标点符号和空白字符包围标签 还有一个额外的复杂性 有一种代表 html 的 bbcode 我有两种类型的 bbcode 内联 B bold b 和块 C
  • 为什么这个方法不起作用呢? Java 三元运算符

    这段代码有什么问题 void bark boolean hamlet hamlet System out println To Bark System out println Not to Bark 三元运算符不能有不返回值的语句 void
  • 使延迟作业在特定日期时间运行

    我想通过以下方式发送一些电子邮件delayed job 但是 我想在活动之前和之后发送它们 我担心的是这是否真的有效 def one week before run AtendeeMailer delay run at 8th Octobe
  • Powershell Clear-Host 保留缓冲区的替代方案

    我想要像 Clear Host 这样的东西 但想要回滚 到目前为止 我所做的基本上就是添加换行符 直到屏幕清晰为止 尽管当我这样做时 光标开始在页面底部书写 正如预期的那样 尽管不是期望的 我希望从页面顶部开始书写 对于菜单等 这是很自然的
  • jQuery:将元素类型从隐藏更改为输入

    我有一个输入 其类型设置为隐藏 我需要将其类型更改为文本 似乎无法弄清楚这一点 或者是否可以使用 jQuery 使用 jQuery 1 4 您可以在分离时更改输入的类型 marker span span insertBefore myInp
  • 使用 Xamarin Android 连接到蓝牙扫描仪

    我正在开发一个项目 需要连接到蓝牙扫描仪 摩托罗拉 CS3070 我需要捕获输入流并使用它用扫描的条形码填充列表框 我尝试创建一个安全套接字并连接到它 但套接字无法连接 设备已打开并已配对 它充当物理键盘 如果光标位于可编辑字段中 则会填充
  • AngularJS ngMessages 无法绑定到 $index 表达式

    我正在构建一个 Angular 表单 它需要在一个内部可重复的表单元素ngRepeat
  • Blender 与 Unity [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • windows 8 App从App.xaml.cs访问页面方法

    可能是一个愚蠢的问题 所以我提前道歉 我是构建 Windows 8 应用商店应用程序的新手 当应用程序暂停时 我需要在页面脚本上运行一些方法 我只有一个页面 并且 Page1 xaml cs 文件中有一些公共方法 我想从 App xaml
  • 开发网站时如何处理不同的屏幕分辨率/屏幕尺寸?

    我想使用 jQuery 开发一个适用于所有主流浏览器的网站 我想从基本布局开始 一个页眉 几个包含内容的选项卡和页脚 我想知道应该如何创建这个布局来支持不同的屏幕分辨率 屏幕尺寸或窗口尺寸 在定义组件的宽度和高度时 我应该使用像素 点 百分
  • 如何按组仅保留特定列中具有最低和最高值的行?

    简而言之 我该怎么办 structure list id c 1 2 3 4 5 6 user c 1 1 1 2 2 2 value c 1 3 5 2 5 9 Names c id user value row names c NA 6
  • 如何让 Rosenbrock23 在 ParameterizedFunctions.jl DSL 中使用 ODE?

    进一步这个问题 https stackoverflow com questions 54422068 how to fix typeerror in setindex in differentialequations jl 54423008
  • 从 CodeAttribute 内的参数获取 CodeClass?

    我正在研究一些 T4 代码生成 为此我需要在 BarAttribute 构造函数内传递的类型的 CodeClass class Baz class Bar Attribute public Bar Type type Bar typeof
  • Python pandas 检查数据框是否不为空

    我有一个if语句 它检查数据框是否不为空 我的做法如下 if dataframe empty pass else do something 但我确实需要 if dataframe is not empty do something 我的问题
  • 创建“集合字典”

    我需要将数据有效地存储在类似于 集合字典 的东西中 例如有一个字典 其中包含与每个唯一键匹配的多个 唯一 值 我的数据源是一个 不是很好 结构化的 XML 我的想法是 我将浏览许多元素并找到关键 如果key不存在 则将其添加到字典中 如果已
  • 如何在宏 gcc 中添加警告禁用编译指示

    我需要禁用以下代码中宏 LOG W 内部产生的警告 为此 我将此宏包装在另一个宏 LOG W 中 并禁用了其中的警告 Wold style cast 然后在代码中我使用 LOG W 代替 但是我仍然收到警告并且无法找出原因 任何指示表示赞赏
  • Netty 和字节顺序

    由于文档不完善并且缺乏 Netty 经验 我遇到了一些问题 我不知道如何设置默认的 ByteOrder 我需要一个小尾数法默认设置 如果有人能给我一些关于这方面的提示 我会很高兴 你可以使用Bootstrap setOption 去做这个
  • 为什么使用 Schema.org 微数据来标记网页元素?

    我明白为什么以及如何使用Schema org http schema org 将微数据添加到您的网站 这不是一个问题 问题是为什么 Schema org 支持某些可以用简单 HTML5 标记的内容 其中包括 Types WebPage ht
  • 使用 JavaScript 变量作为函数名?

    我在 Javascript 中有以下代码 jQuery document ready function var actions new Object var actions actions 0 create actions 1 update