相关疑难解决方法(0)

使用"new"运算符创建对象时,我们可以省略括号吗?

我看到过以这种方式创建的对象:

const obj = new Foo;
Run Code Online (Sandbox Code Playgroud)

但我认为在创建对象时括号不是可选的:

const obj = new Foo();
Run Code Online (Sandbox Code Playgroud)

创建对象的前一种方法是否在ECMAScript标准中有效并定义?前一种创建对象的方式和后一种方法之间是否存在差异?一个比另一个更受欢迎吗?

javascript new-operator

219
推荐指数
5
解决办法
2万
查看次数

如何在node.js中使用new运算符?

我们有一个带有以下代码的file.js:

module.exports.func = function(txt) {
    this.a = 1;
    this.b = 2;
    console.log(txt, this);
    return this;
}
Run Code Online (Sandbox Code Playgroud)

现在我们有另一个JS文件,我们做以下事情:

var r1 = new (require('./file')).func('r1');
var r2 = new require('./file').func('r2');
Run Code Online (Sandbox Code Playgroud)

在r1的情况下,它按预期工作 - r1包含对新创建的对象的引用.

在r2的情况下,它不起作用 - r2从file.js中获取对module.exports的引用.

目的是通过调用func()构造函数来创建一个新对象.当然,我也可以这样做,它等于r1:

var r3 = require('./file');
var r4 = new r3.func('r1');
Run Code Online (Sandbox Code Playgroud)

但是,我不明白为什么r2的行为与r1的行为不同.

周围的额外括号('./ file')如何产生影响?

require new-operator node.js

13
推荐指数
1
解决办法
1万
查看次数

标签 统计

new-operator ×2

javascript ×1

node.js ×1

require ×1