$.fn.extendはインスタンスメソッドの追加、$.extendはクラスメソッドの追加

$.fn.extendと$.extendの違いメモ。



$.fn.extendと$.extendの違い


タイトルの通り、$.fn.extendはインスタンスメソッドの追加、$.extendはクラスメソッドの追加を行う点が違う。


# インスタンスメソッドの追加
$.fn.extend({
  instance_method: function(){
    console.log('hey')
  }
});

$('div').instance_method();

# クラスメソッドの追加
$.extend({
  class_method: function(){
    console.log('hey')
  }
});

$.class_method()


$.extendはもっと単純にオブジェクトのプロパティを引き継ぐ目的で使われることも多く、jQueryプラグインではこういう書き方をよく見かける。


function do_something(options){
  var default = {
    name: 'abc'
  };
  var options = $.extend(defaults, options);
  console.log(options);
}

# 123と表示される
do_something({name: '123'});


jQueryオブジェクトにインスタンスメソッドを追加するだけなら、$.fn.extendを使わずに$.fnに直接メソッドを追加することもよくある。


# インスタンスメソッドの追加
$.fn.instance_method = function(){
  console.log('hey');
};


参考リンク


jQuery.extendとjQuery.fn.extendとプロトタイプチェイン

jQueryプラグインの作り方の初歩


著者プロフィール
Webサイトをいくつか作っています。
著者プロフィール