var s="hello world";
var S=new String("hello world");
由于substring是String对象的方法,所以在使用s.substring()的时候系统会先把s包装为一个瞬间的String对象,按照这个理解在对字符串进行频繁的调用方法或属性的操作的时候,用new String的方式定义字符串效率会高些,但是在测试的时候发现无论在ie,WebKit, firefox都是恰恰相反,特别在firefox错了近三倍左右。测试代码如下:
var str=new String("hello world");
var now1=new Date().getTime();
for(var i=0;i<10000000;i++){
var k=str.length;
}
var now2=new Date().getTime();
alert(now2-now1)
var str1="hello world";
var now3=new Date().getTime();
for(var i=0;i<10000000;i++){
var j=str1.length;
}
var now4=new Date().getTime();
alert(now4-now3)
另外,字符串的加法操作是直接量之间的操作,所以如果对String对象进行加法操作会有一个瞬时的基本字符串被创建,这样理论上直接量的加法效率高于String对象,但测试结果显示String对象的加法效率要好于string直接量相加。
不晓得是我本人理解有问题,还是什么其他原因导致了这个结果!