文字列の連結 1. 最も一般的に使用される =
この方法は最も効率が悪いと言われています。なぜですか?このメソッドの実際のプロセスを確認できます。
var str = "hello";
str = "world";
(1) "hello" を格納する文字列を作成します。
(2)「world」を格納する文字列を作成します。
(3) 接続結果を格納する文字列を作成します。
(4) str の現在の内容を結果にコピーします。
(5) 「world」を結果にコピーします。
(6) 結果を指すように str を更新します。
ステップ 2 ~ 6 は文字列の連結が完了するたびに実行されるため、この操作はリソースを非常に消費します。このプロセスが何百回、場合によっては何千回も繰り返されると、パフォーマンスの問題が発生する可能性があります。この使い方は将来的には廃止されます、ははは。 ^_^
2. Join() メソッド
//ボタンは
関数 JoinFn() {
var arr = new Array;
arr[0] = "Zhang San"
arr[1]; = "Li Four";
alert(arr.join(""));
}
実行される手順は次のとおりです。
(1) 文字列を作成します。結果を保存します。
(2) 各文字列を結果内の適切な場所にコピーします。
この方法は最初の方法よりも高速です。
3. カスタムクラスをカプセル化する
JavaScript には C# のような StringBuilder クラスはありませんが、StringBuilder クラスをカスタマイズする方法は前の記事で述べた通りです。 「ハイブリッド コンストラクター/プロトタイプ アプローチ」。
//文字を接続するための StringBuilder クラスをカスタマイズします。 String
function StringBuilder() {
this._strings = new Array();
}
StringBuilder.prototype.append = function(str) {
this._strings.push(str) ;
};
StringBuilder.prototype.toString = function() {
return this._strings.join("");
//ボタンは
関数 MyConnectClassFn を呼び出します。 () {
var sb = new StringBuilder();
sb.append("李思"); ; join() が最も速いようですが、3 番目のクラスが最も遅いようです。カスタム StringBuilder クラスに問題があるのでしょうか。