javascript - 为什么 new 与函数表达式一起使用?

标签 javascript

在查看一些源代码时,我发现了这一点:

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/

相关文章:

javascript - 二维数组中增强的 for 循环 - JavaScript

javascript - 在 Symfony 2 中管理常见的 javascript 依赖项

javascript - 保护 SPA 中的 HTML 元素

javascript - 在 Jquery 中按下后更改切换状态图标

javascript - 在 .onclick 函数的方法中调用选定的循环元素

javascript - 只是将 XML/JSON 存储在数据库中以用于数据库中未使用的数据?

javascript - 隔离范围双向绑定(bind)在 angularjs 中不起作用

javascript - setTimeout只循环一次,不提交表单?

javascript - 如何指定哪些内容脚本将在 all_frames 上运行,哪些不会?

javascript - 为设置为 1 的一对位生成所有组合?