我是否应该在调用返回相同对象的函数时使用`new`,无论是否作为构造函数调用?

时间:2013-08-27 01:05:43

标签: javascript performance new-operator

一些函数返回相同的对象,无论是否被称为构造函数。

在性能方面,我应该使用

new RegExp(rg, flags);

new Array(1000);

<德尔> new Object(whatever);

...

RegExp(rg, flags);

Array(1000);

<德尔> Object(whatever);

...

修改:我错了,如果我使用Object()new Object()

,这很重要

2 个答案:

答案 0 :(得分:2)

这取决于类型。对于Array,它是等效的:

  

Array作为函数而不是构造函数调用时,它会创建并初始化一个新的Array对象。因此,函数调用Array(…)等同于具有相同参数的对象创建表达式new Array(…)

Object

  

Object作为函数而不是构造函数调用时,它会执行类型转换。   当Object作为new表达式的一部分调用时,它是可以创建对象的构造函数。

您可以在spec中查找其他类型。

答案 1 :(得分:0)

  

在表现方面

在性能方面,尽可能使用文字

// Array
var arr = [0, 2, 4];

// Object
var obj = {foo: 'bar'};

// RegExp
var re = /foo/ig;

Array执行,执行为Object,执行为RegExp

相关问题