繁体   English   中英

新函数和函数有什么区别

[英]What's the difference between new Function and Function

使用new Function而不是简单的Function的代码很常见。 我想了解为什么, new运营商到底在做什么。

这两者有什么区别?

var y = new Function("a", "alert(a)")
var x = Function("a", "alert(a)")

文档

Function构造函数创建一个新的Function对象。 在 JavaScript 中,每个函数实际上都是一个Function对象。

...

Function构造函数作为函数调用(不使用 new 运算符)与将其作为构造函数调用具有相同的效果。

由于函数实际上是 Javascript 中的对象,因此可以通过标准调用语法和new运算符(在这种情况下实例化一个Function类型的新对象)来调用它们。

我从文档中引用的最后一行是说执行Function()调用new Function()相同。

tl;博士

没有区别。

不同之处在于,当您使用 new 关键字调用该函数时,它会为您的函数创建一个新的“this”空对象,您可以在函数内部为其设置属性。 如果您不返回其他内容,则new调用函数的返回值也将是this

没有 new 关键字就没有新的空 'this' 对象,所以如果你在里面使用它,它会出错。

您可能根本没有在您的函数中使用this ,因此您可能根本看不到任何差异。

ps:一个问题可能是,如果您正在使用this并且您在没有new kw 的情况下调用。 this 将是 fn 中的全局 this。 - 并且在将成为window对象的浏览器环境中......因此您将在其上设置道具,而不是在普通的新空obj上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM