给JavaScript加上一个StringBuilder类
来源:互联网 发布:java io怎样流读取文件 编辑:程序博客网 时间:2024/05/21 01:32
最近学习.net的时候,知道了.net中有StringBuilder类来方便频繁的字符串操作,想起java中也有StringBuffer类来创建可修改的字符串序列,何不给自己喜爱的JavaScript也加上这么个功能呢?于是祭起editplus,经过一番努力,终于有了下面的代码,写完之后上网搜了几个别人写的,感觉自己这个可以生成有规则的html代码的功能是别人没有的,所以贴出来给大家拍拍砖。
我的电脑的测试结果(重复10000次):在ie7上平均为300/1300ms,在ff2上则为400/250ms。
代码如下:
我的电脑的测试结果(重复10000次):在ie7上平均为300/1300ms,在ff2上则为400/250ms。
代码如下:
var StringBuilder = function(){
this._buffer = [];
this._arg1 = "";
this._arg2 = "";
if (arguments.length > 0) this._arg1 = String(arguments[0]);
if (arguments.length > 1) this._arg2 = String(arguments[1]);
}
StringBuilder.prototype.append = function(str){
// this._buffer.push(String(str)); //这个速度没有下面这个快
this._buffer[this._buffer.length] = String(str);
// this._buffer[this._buffer.length] = str; //去掉强制转换将更快,但是下面的表格输出就要修改了
}
StringBuilder.prototype.toString = function(){
return (this._arg2?this._arg1:"") + this._buffer.join(this._arg2 + this._arg1) + this._arg2;
}
StringBuilder.prototype.clear = function(){
this._buffer = [];
}
StringBuilder.prototype.add = StringBuilder.prototype.append;
//example
var table = new StringBuilder("<table border='1'>","</table>");
var tr = new StringBuilder("<tr>","</tr>");
var td = new StringBuilder("<td>","</td>");
for (var i=1; i<10; i++)
{
for (var j=1; j<10; j++)
{
td.append(i*j);
}
tr.add(td);
td.clear();
}
table.append(tr);
document.write(table); // = table.toString()
//speed test
document.write("<h2>使用StringBuilder输出</h2>");
var st = new Date();
var t1 = new StringBuilder();
for (var i=0; i<10000; i++)
{
t1.append(i);
}
document.write(t1);
var et = new Date();
document.write("<br />的时间为" + (et-st) + "毫秒<hr />");
t1.clear();
document.write("<h2>使用普通输出</h2>");
st = new Date();
var s = "";
for (var i=0; i<10000; i++)
{
s += i;
}
document.write(s);
et = new Date();
document.write("<br />的时间为" + (et-st) + "毫秒");
s = "";
this._buffer = [];
this._arg1 = "";
this._arg2 = "";
if (arguments.length > 0) this._arg1 = String(arguments[0]);
if (arguments.length > 1) this._arg2 = String(arguments[1]);
}
StringBuilder.prototype.append = function(str){
// this._buffer.push(String(str)); //这个速度没有下面这个快
this._buffer[this._buffer.length] = String(str);
// this._buffer[this._buffer.length] = str; //去掉强制转换将更快,但是下面的表格输出就要修改了
}
StringBuilder.prototype.toString = function(){
return (this._arg2?this._arg1:"") + this._buffer.join(this._arg2 + this._arg1) + this._arg2;
}
StringBuilder.prototype.clear = function(){
this._buffer = [];
}
StringBuilder.prototype.add = StringBuilder.prototype.append;
//example
var table = new StringBuilder("<table border='1'>","</table>");
var tr = new StringBuilder("<tr>","</tr>");
var td = new StringBuilder("<td>","</td>");
for (var i=1; i<10; i++)
{
for (var j=1; j<10; j++)
{
td.append(i*j);
}
tr.add(td);
td.clear();
}
table.append(tr);
document.write(table); // = table.toString()
//speed test
document.write("<h2>使用StringBuilder输出</h2>");
var st = new Date();
var t1 = new StringBuilder();
for (var i=0; i<10000; i++)
{
t1.append(i);
}
document.write(t1);
var et = new Date();
document.write("<br />的时间为" + (et-st) + "毫秒<hr />");
t1.clear();
document.write("<h2>使用普通输出</h2>");
st = new Date();
var s = "";
for (var i=0; i<10000; i++)
{
s += i;
}
document.write(s);
et = new Date();
document.write("<br />的时间为" + (et-st) + "毫秒");
s = "";
- 给JavaScript加上一个StringBuilder类
- javascript给数字加上千分符
- Qt:给QLineEdit加上一个搜索按钮
- Plus One 给一个数加上1
- 给一个div加上黑色遮罩
- 给QLineEdit加上一个搜索按钮
- 如何给webAPP加上一个apk外壳
- 给 Javascript 加上面向对象的属性:Class.js
- MyEclipse 8.6如何给类加上注释
- 一个给网站图片加上Stamp的C# Class
- 如何给GridView加上一个横向滚动条
- 坎坷WTL行(四)给对话框加上一个背景
- 给图集中个头像加上一个圆形遮罩
- 如何给前三条最新信息旁边加上一个红旗
- JavaScript 给DOM结点加一个类 JavaScript扩展
- javascript中StringBuilder类实现
- Javascript - StringBuilder
- 给图片加上水印
- HTTP会话劫持防范 III
- Lesson Plan(教学计划)翻译
- 数据库连接成功,新建parentt站点成功
- Lesson Plan(原文)
- 临时-2007-2
- 给JavaScript加上一个StringBuilder类
- 什么是SDK?
- CSDN不log的图片上传
- 临时 2007-2b
- Unix和Windows跨系统通讯编程
- QDox笔记
- 垃圾评论有助于SEO吗?
- 面试题
- Windows, VxWorks下telnet的实现(2)