web関連
【jQuery】jQuery.fn.extendってなんだ?ってなったときの備忘録
前にjQuery.fn.extend({…})って書き方のコードを参考にしたことがあってそれをカスタマイズしたら動かなくなったのでjQuery.fn.extendってなんだ?って調べた時の備忘録
関数を作るとプロトタイプが生成される
まず、jQuery.fn.extend
について語る前にjavascriptで関数を作ると「プロトタイププロパティ」というものがデフォで生成されるみたい
で、そのプロトタイププロパティにはメソッドを持たせる事ができて、インスタンスを生成しても継承することができるみたい
以下はプロトタイププロパティの使い方
// 適当な関数を用意
function test() {}
// オブジェクト名.prototype.メソッド名= function() {};
test.prototype.keishou = function() {
console.log('プロトタイプに設定すると継承します');
};
// 関数オブジェクトのインスタンスを生成
var test = new test();
test.keishou(); //'プロトタイプに設定すると継承します';
親に特定のメソッドを持たせて子供に共有するイメージ
Memo:プロトタイプについてわかりやすく書かれていた
Memo:上の参考記事で分かった部分を補足するのに使うとわかりやすいと思う
Link:”[JavaScript
Memo: オブジェクトの基礎”]javascriptにおける関数も配列もはほとんどはオブジェクトらしい
本題、jQuery.fn.extendとは?
jQueryというのはjQuery関数という関数オブジェクトで、普段使ってるjQuery/$('要素名')
とかのjQuery
や$
はjQuery関数のインスタンス、つまり子供
関数なので、当然プロトタイププロパティが存在してjQuery.fn.extend
はjQuery.prototype
にメソッドを代入するための記述方法ってことみたい
具体的な説明は参考サイトに詳しく書かれているのでリンク貼っておく
ここからは実際に使い方とjQuery.fn
という記述方法もあるから2パターンの書き方について乗っけておく
jQuery(function($){
jQuery.fn.extend({
test01_1: function(){
return 'test01_1だよ';
},
test01_2: function(){
return 'test01_2だよ';
}
});
$().test01_1();// test01_1だよ
$().test01_2();// test01_2だよ
jQuery.fn.test02 = function(){
return 'test02だよ';
};
$().test02();// test02だよ
});
jQuery.fn.extend
とjQuery.fn
の違いについては詳しく調べてないけど、前者はたくさんメソッドをprototypeに代入できて後者は一つだけって認識で止まってる
調べようとするとjQuery.extend
との違いが出てきて頭痛くなるから今回はここまで
一応this
を使って以下のような使い方もできる
<div id="test">あいうえおかきくけこ</div>
<script>
jQuery(function($){
jQuery.fn.extend({
test01: function(){
var text = this.text();
return text;
}
});
$('#test').test01();// あいうえおかきくけこ
});
</script>
$('#test')
の部分を変更すれば他の要素でも使いまわすことができる
以上
知らなかったことばかりで理解しようとするので必死っすわ
とりあえず理解したところまでまとめてみた
疲れたー