zoukankan      html  css  js  c++  java
  • 封装个StringBuffer,用array join的方式拼接字符串

     1 (function(window) {
     2     var core_ArrPro = Array.prototype;
     3     var core_slice = core_ArrPro.slice;
     4     var core_push = core_ArrPro.push;
     5     var core_unshift = core_ArrPro.unshift;
     6 
     7     function StringBuffer() {
     8         this.buffer = [];
     9     }
    10     StringBuffer.prototype = {
    11         push: function() {
    12             core_push.apply(this.buffer, core_slice.call(arguments));
    13             return this;
    14         },
    15         unshift: function() {
    16             core_unshift.apply(this.buffer, core_slice.call(arguments));
    17             return this;
    18         },
    19         toString: function() {
    20             return this.buffer.join('');
    21         }
    22     };
    23     return window.StringBuffer = StringBuffer;
    24 })(window);
    25 document.getElementById('result').innerHTML = new StringBuffer().push('asdasd').unshift('654', 123).push(123, 564, 'sdf');

     由于apply效率低于call,而大多push操作只有1个参数,随更新为如下:

    (function(window) {
                    var core_ArrPro = Array.prototype;
                    var core_slice = core_ArrPro.slice;
    
                    function StringBuffer() {
                        this.buffer = [];
                    }
                    StringBuffer.prototype = {
                        push: function() {
                            if(arguments.length == 1){
                                this.buffer.push(arguments[0])
                            }else if(arguments.length > 1){
                                this.buffer = this.buffer.concat(core_slice.call(arguments));
                            }
                            return this;
                        },
                        unshift: function() {
                            if(arguments.length == 1){
                                this.buffer.unshift(arguments[0])
                            }else if(arguments.length > 1){
                                this.buffer = core_slice.call(arguments).concat(this.buffer)
                            }
                            return this;
                        },
                        toString: function() {
                            return this.buffer.join('');
                        }
                    };
                    return window.StringBuffer = StringBuffer;
                })(window);
                document.getElementById('result').innerHTML = new StringBuffer().push('asdasd').unshift('654', 123).push(123, 564, 'sdf');
  • 相关阅读:
    【2020-05-03】发掘自己内心那个原点的力量
    【2020-05-02】要适应不确定性
    【2020-05-01】人生十三信条
    【一句日历】2020年5月
    【2020-04-30】每一句话,都是自我学习
    【2020-04-29】勤奋是一种享受
    【2020-04-28】自我观念强化的实践
    【2020-04-27】自我提升的里程碑
    【2020-04-26】还在温室里的自己
    家谱树(信息学奥赛一本通 1351)
  • 原文地址:https://www.cnblogs.com/henryli/p/3644813.html
Copyright © 2011-2022 走看看