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;

);



当然,我们还有其他方法。