Javascript:构造函数vs对象初始化器速度

Aro*_*ire 2 javascript optimization performance

与等效对象初始化程序相比,构造函数的运行速度之间是否有任何差异?

例如

function blueprint(var1, var2){
    this.property1 = var1;
    this.property2 = var2;
}

var object1 = new blueprint(value1,value2);
Run Code Online (Sandbox Code Playgroud)

VS

object1 = {property1:value1, property2:value2};
Run Code Online (Sandbox Code Playgroud)

如果存在,在优化代码时是否足以引起关注或文件大小优先?

Mal*_*lio 7

如果存在,在优化代码时是否足以引起关注或文件大小优先?

都不是.

像这样的决策对系统性能有任何(正面)影响是极其罕见的.即使当前的浏览器(或任何您的执行环境)以某种方式显示出可观察的优势,这种差异也不太可能在新版本上持续存在.

"优化正确的代码比纠正优化的代码要容易得多."

编写可读,可维护的代码,当它们都正确时,检查它是否令人反感慢或文件是否过大并进行优化.


pet*_*ete 5

在控制台中运行:

function blueprint(var1, var2){
    this.property1 = var1;
    this.property2 = var2;
}

var start = new Date();
var stop;
var object1;
for (var i = 0; i < 1000000; i++) {
    object1 = new blueprint(1,1);
}
stop = new Date();
console.log(stop - start);
Run Code Online (Sandbox Code Playgroud)

结果...

 Google Chrome: 2832 milliseconds

Firefox 3.6.17: 3441 milliseconds
Run Code Online (Sandbox Code Playgroud)

在控制台中运行:

var start = new Date();
var stop;
var object1;
for (var i = 0; i < 1000000; i++) {
    object1 = {
        'property1': 1,
        'property2': 1
    };
}
stop = new Date();
console.log(stop - start);
Run Code Online (Sandbox Code Playgroud)

结果...

 Google Chrome: 2302 milliseconds

Firefox 3.6.17: 2285 milliseconds
Run Code Online (Sandbox Code Playgroud)

临时而言,显而易见的是哪个更快。但是,除非您要进行大量操作,否则我认为您应该使用可读性更高的内容,而不用担心。