javascript - 如何在 JS 中使用动态名称调用函数

标签 javascript canvas

我试图按照我在下面发布的相同示例将其称为函数。所以问题是我用来调用函数的方法不起作用......我需要类似的东西因为我将通过监听事件调用这些函数。有人知道马上去做吗?

谢谢。

//variables
var ta = 3213;
var da = 44;
var s = [];

//Create string representation of function
s[1] = "function test0(){  alert(" + da + "); }";
s[0] = "function test1(){  alert(" + ta +"); }";

//"Register" the function
for(i=0; i< s.length; i++){
	eval(s[i]);
}

// calling the function
this["test"+1];

最佳答案

通常我们应该避免eval。您无需使用 eval 也可以使用更简单的代码来尝试做的事情:

//variables
var ta = 3213;
var da = 44;
var s = [];

//Create string representation of function
s[1] = function test0(){  alert(" + da + "); };
s[0] = function test1(){  alert(" + ta +"); };

s.forEach((fun) => { this[fun.name] = fun;});

// calling the function
this["test"+1]();

或者在你的代码中简单地做:

this["test"+1]();

编辑:

如果您使用字符串和 eval 只是因为您将函数名称作为字符串获取,那么您可以创建一个对象:

var data = {};
for(var i = 0; i<10; i++) {
  data['key'+ i] = function (i) { alert(i); }.bind(null, i);
}

关于javascript - 如何在 JS 中使用动态名称调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43726544/

相关文章:

javascript - 使用 CocoonJS 在 DOM 或 Canvas 中使用菜单?

javascript - 缩放以适合, Canvas ,javascript

java - 用 Java 类 Android 画一条线

javascript - 你如何在没有 'onclick' 的情况下执行 Javascript 函数,如 SOF 上的新帖子中的 "Grippie"

javascript - 尝试检测浏览器关闭事件

javascript - 在其派生链中调用 Observable 的 onNext() 方法

javascript - 如何在 Safari 和 IE 中访问网络摄像头?是否有 getUserMedia 的替代方法?

javascript - Canvas :动画一个简单的星空

javascript - 使用 Javascript 和 ColdFusion 链接备注和注释

javascript - 切换空间时 Mac OS X 上的 Chrome Canvas 错误?