zoukankan      html  css  js  c++  java
  • 在javascript里实现StringBuilder

     Step 1.探秘JavaScript里的字符串连接
    举例:
    var str = "good";
    str += " morning";
    代码实际执行步骤和C#中的类似
    1.分配"good"的内存
    2.分配" morning"的内存
    3.开辟两个字符串连接后的内存
    4.将str当前的内容复制到新内存
    5.把" morning"复制到新内存
    6.把str的引用指向新的内存
    问题:当涉及到很多字符串连接时,就会感觉到效率问题
    解决方法:用Array对象存储字符串,然后用join方法连接字符串
    var array = new Array();

     // 查了一下W3C有关Array的创建,它说:"you can add as many values as you need to

     //define as many variables you require",试了下可以达到10的10次方的数量级
    array[0] = "good";
    array[1] = " morning";
    var str = array.join("");

    步骤:
    1.开辟存储字符串的内存
    2.将每个字符串复制到新的内存,str指向它

    Step 2.如何实现javascript 的 StringBuilder
    举例:

    <html>
    <head>
    <title></title>
    <script>

    function StringBuilder()
    {
     this._stringArray = new Array();
    }

    StringBuilder.prototype.append = function(str)
    {
     this._stringArray.push(str);
    }

    StringBuilder.prototype.toString = function(joinGap)
    {
     return this._stringArray.join(joinGap);
    }

    function TestArray()
    {
        var stringBuilder = new StringBuilder();
        stringBuilder.append("good");
        stringBuilder.append("moring");
        var str= stringBuilder.toString(" ");
        alert(str);
    }
    </script>
    </head>
    <body onload="TestArray();">
    </body>
    </html>

    说明:可以把下面代码放到js文件中,例如取名"StringBuilder.js",然后引用即可。
    <html>
    <head>
    <title></title>
    <script src="StringBuilder.js"></script>
    <script>
    function TestArray()
    {
        var stringBuilder = new StringBuilder();
        stringBuilder.append("good");
        stringBuilder.append("moring");
        var str= stringBuilder.toString(" ");
        alert(str);
    }
    </script>
    </head>
    <body onload="TestArray();">
    </body>
    </html>

  • 相关阅读:
    数组实现栈
    栈应用实例单词逆序
    使用JXMapViewer将地图集成到swing app中
    使用xbee连接地面站和飞控
    QWT编译、配置、使用(Qt Creator)
    Qt跨线程调用错误解析及解决办法
    SVN版本服务器搭建(服务端+客户端)
    opencv配置过程 (cmake,vs2013,qt 5.4)
    基数排序/Go实现
    c/c++ 编译器内存对齐问题
  • 原文地址:https://www.cnblogs.com/matthew/p/1268843.html
Copyright © 2011-2022 走看看