在查看一些源代码时,我发现了这一点:
require["./helpers"] = new function() {...};
为什么这里使用new
?当我在 JSLint 上运行它时,我得到了
奇怪的结构。删除"new"。
那么这只是一种风格,个人喜好吗?或者这背后有什么东西?
最佳答案
这是一种创建对象的方法,允许在创建过程中使用 this
。
这在实例化过程中提供了对象字面量语法所不允许的对象的一些直接引用。
var o = new function() {
this.num = Math.random();
this.isLow = this.num < .5; // you couldn't reference num with literal syntax
};
对象文字版本需要如下所示:
var o = {
num: Math.random()
};
o.isLow = o.num < .5;
所以匿名函数基本上是作为临时构造函数使用的。我们可以很容易地使用命名构造函数,但由于我们并不真正关心构造函数,我们只使用“一次性”函数。
当然,由于它是一个函数,它会创建一个局部变量范围,因此如果您将任何函数分配给新对象,它们将能够关闭局部变量。
关于javascript - 为什么 new 与函数表达式一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683242/