・オブジェクトの中に関数をしまった時、その関数をメソッドという。
このオブジェクトの中のメソッドという良い方をする。
と聞いたのですが、この認識でよいのでしょうか?
・ソース
var user = {
name: "suzuki",
height: 160,
age: 22,
printName: function(){
console.log(this.name) ;
}
};
function(){
console.log(this.name) ;
}
の部分をメソッドという。
単独で
function(){
console.log(this.name) ;
}
とある場合は関数という。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
言い方が変わったのではありません。関数の一部をそのようにも呼ぶとしただけです。メソッドはやはり関数であり、関数ではないメソッドは存在しません。つまり、
- 関数で__ない__、かつ、メソッドでも__ない__もの
- 関数である、かつ、メソッドでは__ない__もの
- 関数である、かつ、メソッドでもあるもの
の三種類しか存在しません。質問のコードはどちらも関数です。しかし、片方はメソッドでもあり、もう片方はメソッドではありません。メソッドになれば、関数ではなくなるのではありません。別の呼び方もできるようになっただけです。例えると、「人間のうち、生物学的に雄の特徴を持つものを男性という。」と言っているような関係です。比喩的表現を除けば、男性はすべて人間です。そして同じく、人間から男性と言い方が変わったのではありません。人間の一部を男性と呼ぶに過ぎません。
では、なぜそのように別の呼び方を付けるのかというと、動作の説明等をしやすくするためです。もし、「メソッド」という言葉が無ければ、「メソッドはレシーバー.プロパティ名(引数)
という形で呼び出せる」という文章が「オブジェクトのプロパティ値になっている関数はレシーバー.プロパティ名(引数)
という形で呼び出せる」としなければなりません。メソッドの説明をするところ全てでそのような表現をするのは冗長です。なので、メソッドというカテゴリー(分類)を作って、一部の関数をそのように区別して呼べるようにしただけです。
例えで出した「男性」も同じです。「こちらは男性用トイレです。」というのを「こちらは生物学的に雄の特徴を持つ人間用トイレです。」とか言っていたら不便で仕方がありません。このように人は物事のカテゴリーを細分化することで、物事の説明をさらにしやすくし、分析や理解が深められるようにします。
投稿2016/12/23 20:59
編集2016/12/23 21:01総合スコア21739
0
"メソッド"っていうと、「xxが持つ機能」といった意味合いを持つから。
と、私は理解して"メソッド"と"関数"を使い分けています。
投稿2016/12/23 06:12
編集2016/12/23 06:31総合スコア4269
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/23 06:30
0
オブジェクトのプロパティに関数オブジェクトを設定した場合に、
そのプロパティをメソッドと呼ぶ、というのが正しいと思います。
function(){
console.log(this.name) ;
}
の部分をメソッドという
というのは正確ではないと思います。
あくまでもメソッドはprintNameです。
function(){
console.log(this.name) ;
}
の部分は関数です。
例えば…弁当が売っています。
それをあなたがお昼に買いました。実体は弁当のままですが、これはあなたにとっての「お昼ごはん」です。
夜に買えば「夜ごはん」になるかもしれません。でも実体は弁当です。
そして日本語を勉強し始めたばかりの外国人が、「なぜさっきまで弁当と言っていたものが、お昼ごはんに変わるのですか」という質問をしだした。この質問はそんな状況に似ていると思います。
「プロパティに関数を設定したらメソッドと呼ぶ、そういうものなの」と、そんな感じですよ。
関数の一種にメソッドがあるのですね。
違いますよ。「弁当の一種がお昼ごはん」というわけではありません。弁当をお昼に食べるときにお昼ごはんと呼ばれるのです。
投稿2016/12/24 02:57
総合スコア902
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/12/24 03:27
0
メソッドはメンバ関数とも言いますので別に関数の一種といっても問題はないと思います。
ただし、そもそも「関数」という名前自体が古い名残を引きずりすぎていると思います。これは数学におけるもの(引数に応じて値が決まるもの)を語源としています。が、プログラミングにおいては「サブルーチン」としての側面も持ちます。引数や戻り値がないサブルーチンすら関数と呼んでいる時点でそもそも語源から離れています。もっとも、これは「変数」にもいえることですし、オブジェクト指向以前の問題なので今更感がする話ですけどね。
投稿2016/12/23 17:58
総合スコア4830
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/12/23 23:09
0
ベストアンサー
オブジェクトの中に関数をしまった時、その関数をメソッドという。
Javascript の言語仕様上も、その認識で問題ないと思います。
(私の英語力では、正確に訳せているかイマイチ自信がありませんがw)
関数
http://www.ecma-international.org/ecma-262/5.1/#sec-4.3.24
member of the Object type that is an instance of the standard built-in Function constructor and that may be invoked as a subroutine
(標準の組み込み関数であるコンストラクタによって生成される?)インスタンスで、 サブルーチンとして呼びだすことができる Object型の一つ
※()部分は私の意訳
メソッド
http://www.ecma-international.org/ecma-262/5.1/#sec-4.3.27
function that is the value of a property
プロパティの値としての関数
投稿2016/12/23 15:59
総合スコア4791
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/12/23 23:09
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/12/23 23:08
2016/12/24 03:18
2016/12/24 03:48
2020/10/23 21:50