web関連

【javascript】関数とメソッドの違い

2020/09/04

関数とメソッドの違いがよくわかってないんじゃないかと思って調べた

関数とメソッドの違い

ちょうどいい参考サイトがあったわ

参考サイトによると

  • 「メソッド = 関数」で、オブジェクト内で指定した関数は「メソッド」
  • オブジェクトのプロパティに関数オブジェクトを指定すると、そのプロパティは「メソッド」
  • オブジェクトが持つ機能(関数)はメソッド

ってことみたい
オブジェクトの中の関数は「メソッド」って理解でよさげ
あくまで、メソッドは関数を言い換えた表現で物は一緒みたいだわ

個人的には納得しちゃったけど、どう違うかコード乗っけておく
// 関数
function test(){
	console.log('これは関数');
}
test();// これは関数

// メソッド
var test = {
	// プロパティ名 : 値
	name : 'これはtestオブジェクトのメソッド',
	kansu :  function() {
		console.log(this.name);
	}
}
test.kansu();// これはtestオブジェクトのメソッド

こんな感じで違う

変数もオブジェクトって言うの知らんかったし、変数にこんな感じでプロパティを指定できるのも知らんかった
this使ってるのはオブジェクト内の関数(メソッド)ってどこを参照するのか気になったから

まとめ

javascriptなんかでID要素を取得するときに

document.getElementById(id);

って書いたりするけど、これはdocumentオブジェクトのgetElementById関数だからメソッドっていうみたい(オブジェクトの中の関数はメソッド)

jQueryも同じで

$('id').text();

ってテキストを取得するコードで、.text()はjQueryオブジェクトのメソッド
text()単体だと使えないしね

jQueryのほうは僕の理解だとうまく説明しづらいなぁ
$が既にjQueryオブジェクト(インスタンス)で('id')がid要素を取得するメソッドになっているって認識なんだけど合ってる?

.○○()みたいに後ろに括弧がついていたら関数だと思っていたんだけど全然違うね
しかも.○○って括弧なかったらメソッドだと思ってたけどプロパティですな