質問: ### 前提 JavaScriptの勉強を始めて二週間目です。主にprogateで勉強しています。 非常に初歩的な質問でお恥ずかしいのですが、 「メソッド」と「関数」の違いについての質問です。 自分でも何を言っているのかわからなくなりそうなので時系列順に説明させてください。 そもそも私がprogateで勉強した中では **関数:いくつかの処理をまとめたもの、プログラムの部品のようなイメージ。** **メソッド:クラスの重要な機能の一つであり、そのインスタンスの動作のようなものである。処理のまとまりを表す。** とのことでした ですがそれ以降の問題や例文の中には突如filterメソッドやforEachメソッドなどクラスとは関係のないところでメソッドが使われました。 ここで、最初に「?」状態となりました。 そして、その問題を解いていく中でも疑問点があったためteratailにて質問を投稿した際、私が「filterメソッド」だと学んだものを回答者様は「filter関数」と呼ばれていた為、 ここで「関数とメソッドは同義なのか?」という疑問に変わり メソッドについて調べなおしたところ **メソッド:オブジェクトのプロパティに代入された関数のこと。あらかじめ設定しておいた特定の情報(値)に、名前(プロパティ名)をつけたものです。そのプロパティのなかでも、関数を特に「メソッド」と言います。** とのことでした。 また、teratailにあった以下の質問を参考にしました。 そこで再びprogate内での私の理解なのですが、 オブジェクトの値の部分には、関数を用いることもでき、 またその関数を呼び出す際には「**定数名.プロパティ名()**」とする。 ということでした。 ### 疑問 であるならば、実際にプロパティや処理を指定されていないメソッド(forEachやfilter等)の呼び出しはどういった仕組みで実行されているのでしょうか。 javascriptの仕様でもともと定義されており、呼び出し方等違いがあるという理解で良いのでしょうか?
回答: > > 突如filterメソッドやforEachメソッドなどクラスとは関係のないところでメソッドが使われました。 > > > 関係なくないです。 Arrayクラス(コンストラクター)のメソッドです。 ちなみに、仕様で定義されている関数単体で呼び出すものも、 JavaScriptにおいては、殆どがグローバル(ブラウザの場合はwindow)ないし、各オブジェクトから呼び出す形になるので、メソッドとも呼べるかと。