前端性能优化:创建对象

来源:互联网 发布:以太网数据帧格式详解 编辑:程序博客网 时间:2024/05/21 14:40

有的资料上说不同的创建对象的方式会有一定的性能差别,var obj =new Object();这种方式最慢,var obj = { name1: name1, name2: name2, name3: name3 ,name4:name1+name2}; 这种方式最快。但发展了这么多年,有变化吗?

测试代码如下:

var length=30000;/*new 的方式创建*/function CreateObj1(name1,name2,name3){   var obj =new Object();  obj.name1=name1;  obj.name2=name2;  obj.name3=name3;   obj.name4=name1+name2;  obj.name5=name1+name3;   return obj;}/*不适用new 的方式创建,属性分别赋值*/function CreateObj2(name1,name2,name3){  var obj ={};  obj.name1=name1;  obj.name2=name2;  obj.name3=name3;  obj.name4=name1+name2;    obj.name5=name1+name3; // var obj = { name1: 1, name2: i + 10, name3: i + 3 };    return obj;}/*不适用new 的方式创建,属性一次性赋值*/function CreateObj3(name1,name2,name3){    var obj = { name1: name1, name2: name2, name3: name3 ,name4:name1+name2, name5:name1+name3};    return obj;}/*原始循环*/function Test1(){var date1=new Date().getTime();  var t=[];for(var i=0;i<length;i++){ t[i]=CreateObj1(1,"name"+i,i+10);}var date12=new Date().getTime();console.log("1Test"+((date12-date1)));}/*原始循环*/function Test2(){var date1=new Date().getTime();  var t=[];for(var i=0;i<length;i++){ t[i]=CreateObj2(1,"name"+i,i+10);}var date12=new Date().getTime();console.log("2Test"+((date12-date1)));}/*原始循环*/function Test3(){var date1=new Date().getTime();  var t=[];for(var i=0;i<length;i++){ t[i]=CreateObj3(1,"name"+i,i+10);}var date12=new Date().getTime();console.log("3Test"+((date12-date1)));}
测试发现,随着对象的属性越来越多,三种方式的偏差越来越来越明显,但第三种方式的性能始终比其他两种方式好,不管是IE还是谷歌。

1 0
原创粉丝点击