相关疑难解决方法(0)

从字符串名称动态创建JavaScript函数

给定一个字符串classname,我想动态创建一个以该字符串命名的新JavaScript函数,该函数可用于实例化对象.

我尝试过使用eval()但由于某种原因,声明的函数不会出现在全局(窗口)范围内.

eval( "function " + classname + "() {}" );
window[ classname ]; // => undefined
Run Code Online (Sandbox Code Playgroud)

有没有办法可以动态创建一个以字符串命名的新函数?

或者,或者,通过创建它后,给我一些方法来引用创建的函数eval.有趣的是,当我在Safari中调试它时,它看起来像一个局部变量.

更新:

得到它了!当然很明显,我只是eval再次使用来创建实例:

var myInstance = eval( "new " + classname );
myInstance.constructor.name; // => classname (yay)
Run Code Online (Sandbox Code Playgroud)

这应该适用于我的情况,因为我只需要在声明后立即创建一个类的实例.对于一般情况,虽然看到Pointy的答案.

javascript class function

10
推荐指数
2
解决办法
2万
查看次数

Javascript动态地将函数附加到对象

如何动态地将函数附加到javascript对象.例如:如果动态附件的函数是attach(),那么我应该能够将函数fn附加到onject obj,如下所示.

attach(
     obj,fn,{
                  alert(1)
            }
      )


function attach(obj,fnName,code)
{
    obj[fnName] = code;
}
Run Code Online (Sandbox Code Playgroud)

javascript methods object

4
推荐指数
1
解决办法
8547
查看次数

可以在Javascript中在运行时创建函数吗?

维基百科关于一等公民的文章指出,"一些作者"认为,如果语言支持在运行时创建,那么函数只是一种语言中的一等公民.James Coglan撰写的这篇文章明确地将职能视为一流的公民 - 无论他是否意识到有关一流标准的争议,我不知道.

这是我的问题:

  1. 使用"在运行时创建"的附加标准,JavaScript程序是一流的公民吗?

值得一提的是,基于更广义的标准(适用于大多数其他对象),JavaScript函数显然是一等公民,即它们可以作为变量传递; 因此,我觉得上面提到的标准增加了一个有趣的动态 - 或者至少是一个澄清的动态 - 给对话而不是 - 就像一个用户写的那样 - "任意".

  1. 如果是这样,在运行时创建一个函数在JavaScript中是什么样的(这就是我们称之为promises,回调,匿名等)?
  2. 如果没有,在另一种语言的运行时,函数的创建是什么样的?

javascript first-class-functions

3
推荐指数
2
解决办法
1055
查看次数