第5回 コア編連載:jQuery逆引きリファレンス(11/13 ページ)

» 2010年03月12日 00時00分 公開



「連載:jQuery逆引きリファレンス」のインデックス

連載目次


 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>

リスト088 jQueryオブジェクトにsprintf静的メソッドを追加(Extend1.htm)
このHTMLを実際にブラウザで開く

 extendメソッドには、オブジェクト・リテラルの形式で拡張するメソッドを指定できます。ここではsprintfメソッド1つを定義しているだけですが、(もちろん)メソッドの定義を列挙することで、複数のメソッドを同時に追加することも可能です。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。