⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stringbuffer.js

📁 javascript 很酷的类库
💻 JS
字号:
/*
 * Isomorphic SmartClient
 * Version 6.5 (2008-04-30)
 * Copyright(c) 1998-2007 Isomorphic Software, Inc. All rights reserved.
 * "SmartClient" is a trademark of Isomorphic Software, Inc.
 *
 * licensing@smartclient.com
 *
 * http://smartclient.com/license
 */
 //>	@class	StringBuffer////		Use instances of this class to concatenate strings rather than using the normal "this"+"that" methodology.//		For large sets of strings, this can be up to an order of mangintude faster!////		You can use this class in two ways://			1) if you have a static and fairly small set of things to concatenate, call statically//					alert(StringBuffer.concat("this"," ","that ","and the other"))//				yields:		"This that and the other"////			2) if you have a loop or more complex logic, create s StringBuffer instance and append to that,//				then do a buffer.toString() on the results (or do something like an alert() or document.write()//				that does a toString() for you://				//                  <pre>//					var buffer = StringBuffer.newInstance();//					for (var i = 0; i < 10; i++) {//						buffer.append(i, " ");//					}//					alert(buffer)//				yields:	"0 1 2 3 4 5 6 7 8 9 "//              </pre>//<isc.ClassFactory.defineClass("StringBuffer");// nicknameisc.SB = isc.StringBuffer;isc.StringBuffer.addClassProperties({    // For efficiency we re-use StringBuffers (created lazily when needed).    _bufferPool:[],    // upper limit on the number of outstanding buffers to be re-used    _maxPoolSize:50});isc.StringBuffer.addProperties({    	maxStreamLength : (isc.Browser.isIE6 ? 1000 : 100000),    // Don't add props passed in to the SB on create - not supported and this is slightly    // more efficient    addPropertiesOnCreate:false    });isc.StringBuffer.addMethods({    //>	@method		stringBuffer.init()	(A)// Initialize the string buffer//		@group	concat////		@param	[a,b,c]	(object)	properties for the buffer instance//<init: function () {	// create the stream array	this._stream = [];},//>	@method		stringBuffer.append()// Append all arguments to the string buffer as strings//		@group	concat////		@param	[arguments]	(string)	strings to append to the buffer//<append : function (arg1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) {            // Set up local variable to use - this is a very small amount quicker than always referencing    // this._stream directly    var theStream = this._stream,  // by reference - manipulating this manipulates this._stream        strings,        undef;       // If we are passed an array, it's quickest to manually add it slot by slot   	if (arg1 != null && arg1.constructor.__nativeType == 2) {                var length = arg1.length;        if (length <= 30) {                   var length = theStream.length;            for (var i = 0; i < arg1.length; i++) {                theStream[length++] = arg1[i];            }        } else {                    theStream[theStream.length] = arg1.join(isc.emptyString)        }    // If we are not passed an array it's quickest to iterate through the arguments and add them    // to this._stream.    // We don't have arguments.join(), and adding it is too expensive    } else {        if (Z === undef && Y === undef && X === undef) {                        if (arg1 != null) theStream[theStream.length] = arg1;            if (A != null) theStream[theStream.length] = A            if (B != null) theStream[theStream.length] = B            if (C != null) theStream[theStream.length] = C            if (D != null) theStream[theStream.length] = D            if (E != null) theStream[theStream.length] = E            if (F != null) theStream[theStream.length] = F            if (G != null) theStream[theStream.length] = G            if (H != null) theStream[theStream.length] = H            if (I != null) theStream[theStream.length] = I            if (J != null) theStream[theStream.length] = J            if (K != null) theStream[theStream.length] = K            if (L != null) theStream[theStream.length] = L            if (M != null) theStream[theStream.length] = M            if (N != null) theStream[theStream.length] = N            if (O != null) theStream[theStream.length] = O            if (P != null) theStream[theStream.length] = P            if (Q != null) theStream[theStream.length] = Q            if (R != null) theStream[theStream.length] = R            if (S != null) theStream[theStream.length] = S            if (T != null) theStream[theStream.length] = T            if (U != null) theStream[theStream.length] = U            if (V != null) theStream[theStream.length] = V            if (W != null) theStream[theStream.length] = W         // If we were passed more than 27 args, look at the arguments object                } else {            strings = arguments;            for (var i = 0, l = strings.length; i < l; i++) {                theStream[theStream.length] = strings[i]            }        }    }    	// if we're holding on to too many string instances, collapse them into one instance    // This is because IE slows down in general when a lot of large objects are sitting in    // memory    if (theStream.length > this.maxStreamLength) {        theStream[0] = theStream.join(isc.emptyString);         //isc.Log.logWarn("collapsing stream: " + theStream[0].substring(0, 80));        theStream.length = 1;    }    return this;},appendNumber : function (number, length) {    var stream = this._stream;    if (length == null) {        length = 5;        var numberCopy = number;        if (numberCopy < 0) {            numberCopy = 0 - numberCopy;            // add one for the "-" char            length += 1;        }        // If it will take up more than 5 slots, determine how many it needs        if (numberCopy >= 100000) {            numberCopy = numberCopy / 100000;            while (numberCopy >= 1) {                length += 1;                numberCopy = numberCopy / 10;            }        }    }    isc._fillNumber(stream, number, stream.length, length);},clear : function () {    this._stream.length = 0;},// Can be called when a stringBuffer is no longer required - gets added to the pool to be reused// Also returns the buffer's contentsrelease : function () {        var SB = isc.SB, pool = SB._bufferPool,        string = this.toString();    if (pool.length < SB._maxPoolSize) {        // Clear it out and put it into the pool         this.clear();        pool[pool.length] = this;    }    return string},getArray : function () {    return this._stream;}});//>	@method		stringBuffer.toString()//		@group	concat// 			Return all of the appended strings as a single string.// 			Added manually here since doing it with addMethods doesn't work because toString is not// 			enumerable.////		@return	(string)	a single concatenated string//<isc.StringBuffer.getPrototype().toString = function () {    //if (isc.Browser.isMoz) isc.SB._checkArray(this._stream);	return this._stream.join(isc.emptyString);}isc.StringBuffer._joinFunc = Array.prototype.join;isc.StringBuffer.addClassMethods({// Override create() - if we've already created a stringBuffer that's no longer being// used, reuse it.create : function () {    var pool = this._bufferPool,        poolLength = pool.length;    if (poolLength > 0) {        var buffer = pool[poolLength -1];        pool.length = poolLength -1;        return buffer;    } else {        // standard creation.        return isc.Class.create.apply(this);    }},    //>	@method		StringBuffer.concat()//		@group	concat// 			Static method that will return a string composed of the arguments passed in////		@return	(string)	a single concatenated string//<_joinBuffer : [],concat : function (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,                   a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) {            var undef,        returnString;    if (isc.Browser.isIE && x === undef && y === undef && z === undef) {        var buffer = this._joinBuffer;        buffer.length = 0;                if (A != null) buffer[buffer.length] = A;        if (B != null) buffer[buffer.length] = B;        if (C != null) buffer[buffer.length] = C;        if (D != null) buffer[buffer.length] = D;        if (E != null) buffer[buffer.length] = E;                if (F != null) buffer[buffer.length] = F;        if (G != null) buffer[buffer.length] = G;        if (H != null) buffer[buffer.length] = H;        if (I != null) buffer[buffer.length] = I;        if (J != null) buffer[buffer.length] = J;        if (K != null) buffer[buffer.length] = K;          if (L != null) buffer[buffer.length] = L;        if (M != null) buffer[buffer.length] = M;                if (N != null) buffer[buffer.length] = N;        if (O != null) buffer[buffer.length] = O;        if (P != null) buffer[buffer.length] = P;        if (Q != null) buffer[buffer.length] = Q;        if (R != null) buffer[buffer.length] = R;        if (S != null) buffer[buffer.length] = S;        if (T != null) buffer[buffer.length] = T;        if (U != null) buffer[buffer.length] = U;        if (V != null) buffer[buffer.length] = V;        if (W != null) buffer[buffer.length] = W;        if (X != null) buffer[buffer.length] = X;        if (Y != null) buffer[buffer.length] = Y;        if (Z != null) buffer[buffer.length] = Z;        if (a != null) buffer[buffer.length] = a;        if (b != null) buffer[buffer.length] = b;        if (c != null) buffer[buffer.length] = c;        if (d != null) buffer[buffer.length] = d;        if (e != null) buffer[buffer.length] = e;        if (f != null) buffer[buffer.length] = f;        if (g != null) buffer[buffer.length] = g;        if (h != null) buffer[buffer.length] = h;        if (i != null) buffer[buffer.length] = i;        if (j != null) buffer[buffer.length] = j;        if (k != null) buffer[buffer.length] = k;        if (l != null) buffer[buffer.length] = l;        if (m != null) buffer[buffer.length] = m;        if (n != null) buffer[buffer.length] = n;        if (o != null) buffer[buffer.length] = o;        if (p != null) buffer[buffer.length] = p;        if (q != null) buffer[buffer.length] = q;        if (r != null) buffer[buffer.length] = r;        if (s != null) buffer[buffer.length] = s;        if (t != null) buffer[buffer.length] = t;        if (u != null) buffer[buffer.length] = u;        if (v != null) buffer[buffer.length] = v;        if (w != null) buffer[buffer.length] = w;        if (x != null) buffer[buffer.length] = x;        if (y != null) buffer[buffer.length] = y;        if (z != null) buffer[buffer.length] = z;                returnString = buffer.join(isc.emptyString);    } else {   	    arguments.join = this._joinFunc;        returnString = arguments.join(isc.emptyString);    }        return returnString;}});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -