jQueryオブジェクトを拡張するには、$.extendメソッドを使用します。$.fn.extendメソッドにも似ていますが、$.fn.extendメソッドが、jQueryオブジェクトのプロトタイプに対して機能を追加するのに対して、$.extendメソッドはjQueryオブジェクトそのものに対して機能を追加します。
$.extendメソッドが静的メソッドを追加するための、$.fn.extendメソッドがインスタンス・メソッドを追加するための機能であるといい換えてもよいでしょう。
以下は、jQueryオブジェクトに対してsprintfメソッドを追加するためのコードです。sprintfメソッドは、第1引数で与えられた書式文字列に含まれるプレイスホルダ({0}、{1}、……)を第2引数以降で置き換えた結果を返します。
<script type="text/javascript">
// jQueryに静的メソッドを追加
$.extend({
// sprintfメソッドの定義
sprintf: function(format) {
// 第2引数以降を順に処理
for (var i = 1; i < arguments.length; i++) {
// 正規表現でプレイスホルダと対応する引数の値を置換処理
var reg = new RegExp('\\{' + (i - 1) + '\\}', 'g');
format = format.replace(reg, arguments[i]);
}
// 最終的な置き換え結果を戻り値として返す
return format;
}
});
// sprintfメソッドを呼び出し
var result = $.sprintf(
'{0}は{1}です。', 'ニンザブロウ', 'ハムスター');
window.alert(result); // 結果:ニンザブロウはハムスターです。
</script>
extendメソッドには、オブジェクト・リテラルの形式で拡張するメソッドを指定できます。ここではsprintfメソッド1つを定義しているだけですが、(もちろん)メソッドの定義を列挙することで、複数のメソッドを同時に追加することも可能です。
Copyright© Digital Advantage Corp. All Rights Reserved.