![](/img/trans.png)
[英]What's the difference between “new” and directly invoking a generator function?
[英]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()
相同。
没有区别。
不同之处在于,当您使用 new 关键字调用该函数时,它会为您的函数创建一个新的“this”空对象,您可以在函数内部为其设置属性。 如果您不返回其他内容,则new
调用函数的返回值也将是this
。
没有 new 关键字就没有新的空 'this' 对象,所以如果你在里面使用它,它会出错。
您可能根本没有在您的函数中使用this
,因此您可能根本看不到任何差异。
ps:一个问题可能是,如果您正在使用this
并且您在没有new
kw 的情况下调用。 this 将是 fn 中的全局 this。 - 并且在将成为window
对象的浏览器环境中......因此您将在其上设置道具,而不是在普通的新空obj上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.