わんくまでは珍しいJavaを中心とした日記です
http://code.google.com/p/jslibs/wiki/JavascriptTips
結構熱いテクニックが色々と書かれています(クロスブラウザ向けは少ないですが・・・)。ちょっと触発されたので、自分でも使う技を一部紹介します。
var StringBuilder = function(){ this.init(); }; StringBuilder.prototype = { _values : null, init : function(){ this._values = []; }, append : function(value){ this._values.push(value); return this; }, toString : function(){ return this._values.join(""); } };
使い方は、
var hoge = new StringBuilder(); hoge.append("aaa").append("bbb").append("ccc"); alert(hoge);
実際に+による文字列連結よりも早いです。
ショートカット関数
//IDで要素を取得 var $id = function(id){ return document.getElementById(id); }; //クリックイベントを追加 var $click = function(el, fn){ if(typeof(el) == 'string'){ el = $id(el); } if(el.attachEvent){ el.attachEvent("onclick" , fn); }else{ el.addEventListener("click", fn, false); } } //他よく使う関数をショートカット化+クロスブラウザ化
$click("button-aaa", function(){ alert("aaaがクリックされました。"); });
投稿日時 : 2007年4月22日 23:54
"aaa"+"bbb"+"ccc"の場合、コンパイラが最適化してあらかじめ"aaabbbccc"にしてしまったりするので 下手なパフォーマンス計測すると逆転したりするので注意が必要ですね。 とりあえずStringBuilderとすればよい、というシンプルなルールにならないので説明がツライところです。
使いどころを選ぶのは確かですね。 Ajaxを使うときには動的な文字列連結が増えるので、そういう場面では結構有効だったりします。
JavaScript って、最適化されるんですか...? (^-^?)
実装によりけりかもしれませんね。
Microsoft の Ajax ライブラリだとこのあたりでやってくれるかな? http://ajax.asp.net/docs/ClientReference/Sys/StringBuilderClass/default.aspx
サーバサイドコードと同等のクラスライブラリを、 クライアント向けに用意するのは最近の流行っぽいですね。 GWTあたりもそういうアプローチですね。
おわ。JavaScriptなのか... orz StringBuilderってJavaと早とちりしていましたよ。
mO4YGy Edidn`t think about that. I'll tell my mother, she won`t believe it..!
A4i6G0 However, the author created a cool thing..!
Strange but true. Your resource is expensive. At least it could be sold for good money on its auction!...
Powered by: Copyright © かつのり