好好学一遍JavaScript 笔记(三)
	javaScript中的String的、拼接:
	与其他语言类似、ECMAScript的字符串是不可变的、即它们的值不能改变。考虑下面的代码:
	
	var str = "hello"; 
	str += "world"; 
	实际上,这段代码在幕后执行的步骤如下:
	1、创建存储"hello"的字符串。
	2、创建存储"world"的字符串。
	3、创建存储连接结果的字符串。
	4、把str的当前内容复制到结果中。
	5、把"world"复制到结果中。
	6、更新str、使它指向结果。
	如果重复这一过程次数较多、就会造成性能问题。
	解决方法是用Array对象存储字符串、然后用join()方法(参数是空字符串)创建最后的字符串:
	
	var arr = new Array; 
	arr[0] = "hello"; 
	arr[1] = "world"; 
	var str = arr.join(""); 
	此时、执行步骤如下:
	1、创建存储结果的字符串。
	2、把每个字符串复制到结果中的合适位置。
	更好的解决办法可以使用StringBuffer类打包该功能:
	
	function StringBuffer(){ 
	            this._string_ = new Array; 
	        } 
	        StringBuffer.prototype.append = function(str){ 
	            this._string_.push(str); 
	        }; 
	        StringBuffer.prototype.toString = function(){ 
	            return this._string_.join(""); 
	        }; 
	         
	        /**由于javaScript没有公私(有)属性的区别、这样声明string只是为了标识它本意是私有属性。
	           测试一下StringBuffer对象和传统的字符串连接方法的性能:
	        */ 
	         
	        var d1 = new Date();   
	        var str = "";   
	         
	        for(var i =0 ; i < 10000; i++){ 
	            str +="性能测试";  
	        } 
	        var d2 = new Date(); 
	        document.write("加号连接:<font color='red;'>"+(d2.getTime()-d1.getTime())+"</font> 所用时间"); 
	         
	         
	
相关新闻>>
- Javascript 兼容 IE6、IE7、FF 的“加入收藏”“设为首页”
 - 好好学一遍JavaScript 笔记(一)——基础中的基础
 - 好好学一遍JavaScript 笔记(二)——encode、数组、对象创建
 - 好好学一遍JavaScript 笔记(三)——StringBuffer、prototype
 - 好好学一遍javaScript 笔记(四)——Attribute、HTML元素、文档碎
 - 好好学一遍JavaScript 笔记(五)——正则表达式基础
 - 好好学一遍JavaScript 笔记(六)——正则表达式基础二
 - 好好学一遍JavaScript 笔记(七)——RegExp对象与常用正则
 - 好好学一遍JavaScript 笔记(八)——冒泡型事件、捕获型事件
 - JavaScript详解
 
- 发表评论
 - 
				
 
- 最新评论 进入详细评论页>>
 





