Javascript中DSL元编程的介绍
当您查看Javascript模板源代码时,您会发现有一个非常有趣的用法来生成函数。这不是元编程吗Javascript的元编程
复制代码代码如下所示:
袁边成(编程)是指一种计算机程序的编写,这是书面的或其他计算机程序的操作(或自己)作为它们的数据,或者在运行时,应在编译时完成。
Javascript的eval
复制代码代码如下所示:
eval()函数计算一个字符串和Javascript代码在执行时。
可以使用以下用法:
复制代码代码如下所示:
eval(x = 10;y = 20;document.write(X×Y))
当然,这只是用来执行一个功能,但商品的价格低,而且容易出错。
复制代码代码如下所示:
eval函数应尽可能避免使用。
所以更好的方法是使用新函数()
使用新功能的一大区别()和eval()是评价不仅仅是一个功能,
复制代码代码如下所示:
eval()计算一个字符串作为一个Javascript表达式在当前执行的范围,并可以访问局部变量。新功能()解析Javascript代码存储在一个字符串转换为一个函数对象,然后可以调用。因为在一个范围内运行的代码不能访问局部变量。
也就是说,eval()会干扰当前函数的范围。
javascript新函数()
函数构造函数创建一个新的函数对象。在Javascript中,每个函数(函数)实际上是一个函数对象。函数构造函数生成的函数对象在函数创建时被解析,这比使用函数语句(函数)并在代码中调用它效率要低,因为函数语句所声明的函数与其他语句一起解析。
新函数()是相对低效的,这是我们在当前情况下可以预测的。
下面是一个简单的例子。
复制代码代码如下所示:
添加新的功能(var = { x、Y },返回x + y);
新函数()将字符串解析成一个函数,然后我们可以通过应用程序执行它。
复制代码代码如下所示:
Function.apply(null,args)
这就是我在Javascript模板中看到的:
复制代码代码如下所示:
新功能(
tmpl.arg +源,
无功_e =源。编码+ tmpl.helper +
Str.replace(tmpl.regexp,源。功能)+
';返回_s;
);
当然,我们还有其他方法。