0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

オブジェクトを関数の違い

Posted at

関数もまた、広い意味ではオブジェクトの一種です。

オブジェクトという言葉には「対象」という意味があります。処理や操作の対象となり得るもの、という理解で良いと思います。整数型の単一の変数も、配列も、ポインタも、関数も、メモリ上にある事には変わりなく、メモリを書き換える事が出来れば操作可能なため、広い意味では、全てがオブジェクトです。

しかし、C などの古い言語では、関数内部を実行時に書き換える事が出来ません。関数はあくまで処理記述であって、「処理対象」や「操作対象」ではない、という思想です。

オブジェクト指向を取り入れた C++ や Java では、関数をクラスに包み込めば、そのインスタンスをメモリ上に生成し操作する事が出来ます。これらはクラスをオブジェクトとして取り扱える言語だからです。ただし、関数そのものを書き換える事は出来ません。
そして JavaScript では考え方が更に進み、関数は実行可能なオブジェクト、という扱いになっています。つまり、JavaScript では関数を書き換えていく事が出来ます。

つまり、もともと関数もオブジェクトではあるのだけれど、関数をオブジェクトとして扱える言語は、最近になって出現してきた、と捉えれば良いのではないかと思います。

関数とは、何らかの引数(ない事もある)を受け取り、何かの処理をして、何かの値を返す(ない事もある)、一連の処理の事です。オブジェクトとは文字通り「もの」です。数字、true/false、文字列、null/undefined以外のJavaScriptに存在するものはすべてオブジェクトです。JavaScriptでは、関数もオブジェクトのうちに入ります。

【関数】 は 「 機能 」 です。
【オブジェクト】 は 「 実体 」 です。

マッタク異なります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?