JavaScriptの関数とメソッドの違いって何でしょうか?
言い方が違うだけで一緒です
jsの場合そのへんごっちゃと言えばごっちゃなのだが、言葉の意味的に言えば、グローバルでオブジェクトの指定無しに呼び出せるのが関数で、オブジェクトに紐付いているのがメソッド。
関数はメソッドも含むfunction全部じゃないの?
そうともいえるし、そうでないともいえる。jsってめんどくさい。
jsの場合プロトタイプベースのオブジェクト指向言語なので、厳密には全てがメソッドです。
クラスが内包する関数のことをオブジェクトとか言い出したオブジェクト指向の糞どもの所為で今みたいなわけが解らないことになってるんだよなぁ。
クラスの中にある関数をメソッドとか呼んでる。関数は関数。JSの場合言語的にクラスがないのでアレなんだが、乱暴に言うと foo.bar() だと foo の bar() という関数がfoo のメソッド、とかいう言い方をする。
正解はES仕様書にちゃんと書いてあります。4.3.31methodfunction that is the value of a propertyです。
ここの住人に「ES」って書いてもなんのことやら分からんってば。
そんなこと書いたら今度は、関数とメソッドとプロパティの違いって何でしょうか?ってトピが立つぞwww
プロパティは違うと思うんですけど…
改めて説明すると、1つ目の考え方は「利用の仕方」の違いであって、基本的にfunc()と使うものはメソッドと呼ばずobj.func()と使うものはメソッドと呼びます。但し前者がglobal.func()と置き換えられることから分かるように、objが単にネームスペース的な役割しか持っていない時はメソッドと呼びません。2つ目の考え方はメソッドとは基本的にthisを利用し、objを利用する関数というものです。但し、thisを利用しないスタティックメソッドもメソッドと呼ばれる事があります。これは直接objを利用しないが、関連する機能を提供するものだからで、3つ目の考え方は「定義の仕方」の違いです。これら3つの判断基準を元に、時と場合と視点によってどう呼ぶかは変わります。
みんなの回答 4 件
言い方が違うだけで一緒です
jsの場合そのへんごっちゃと言えばごっちゃなのだが、
言葉の意味的に言えば、
グローバルでオブジェクトの指定無しに呼び出せるのが関数で、
オブジェクトに紐付いているのがメソッド。
クラスの中にある関数をメソッドとか呼んでる。関数は関数。
JSの場合言語的にクラスがないのでアレなんだが、
乱暴に言うと foo.bar() だと foo の bar() という関数が
foo のメソッド、とかいう言い方をする。
正解はES仕様書にちゃんと書いてあります。
4.3.31
method
function that is the value of a property
です。
関連するトピックス