Devsway

日々の記録とか記憶とか。


第3章 関数が肝心


関数はファーストクラスのオブジェクト


ファーストクラスのオブジェクトとしての関数



第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基本的な操作を制限なしに使用できる対象のことである。ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。第一級オブジェクトは「第一級データ型に属す」という。


ほーん。。

「いちばん偉いやつ」って感じかな?

JavaScriptでは関数が「いちばん偉いやつ」ってこと。


3.3関数の呼び出し


関数の呼び出しには4通りあってそれぞれに微妙な違いがある。

– 関数として呼び出し

– メソッドとして呼び出し

– コンストラクタとして呼び出す。

– 関数のapply() or call()メソッドで呼び出す。


第3章まとめ・感想


JavaScriptは関数型言語である、、、PHPとかJavaとかとは全く違うと思うことからが大事ぽい。

他の関数型言語は?

-> そもそもJavaScriptが関数型言語じゃないみたい。

どういうこと?

つまり関数型言語のいいところとオブジェクト指向型言語のいいところを取り入れた「オレオレ言語」ってことらしい。

まぁつまりここらへんはグレーな感じなのであまり気にしないほうがよさそう。

あくまでJavaScriptの関数型言語の「側面」を感じてね、って解釈しとこうか。。


第6章 プロトタイプによるオブジェクト指向 感想


やはりPHPとは全然違う。。

JavaScriptはPrototypeによる継承がもともとの方法。。

そしてそれをClassぽく、JavaとかPHPみたいに見せる方法として、SuperClass.subClass = hogehoge

みたいな記法を使えるようにしたってことか。


でもよくよく考えたら「Class」って文字は出てこないね。。たしかあったはず、、、っておもったら

それはES6からか。。。


だからこのsubClassの記法は実際にはあまり使う機会なさそうだ。

それよりもClassによる記述方法を理解したほうがいいだろう。


しかしやっぱり肝は

JavaScriptはPrototypeによる継承がもともとの方法。。



呼び差しコンテクストの大切さ、、、

ってことかね。


追伸

Schemeからインスピレーションを受けているらしい



参考


https://ja.wikipedia.org/wiki/




カテゴリー

オレオレIT用語辞典