そういえば、JavaScriptではもちろん関数を作れるわけだけど、自分で作ったものや外部のライブラリに含まれるもの以外の「何かをどうにかするもの」は全て「オブジェクトのメソッド」である、ということに気づいた時に、自分の中で何かが変わった感じがあります。割と最近の話です。

フォロー

自分で作ったオブジェクトにメソッドを加えた場合に、そのオブジェクトっていうのが単に自分の認知資源消費を抑えるための名前空間としての働きしかしていないというのがしばらく続いていて、多分それは「ファイルを分けてモジュール化」という手段で実現すべきことであってオブジェクトはオブジェクトとして働くようにした方が良い、という考えが浮かぶようになりました。

主観的な「まとまり感」のためにオブジェクトの形式を流用していたということになる。
で、それは既存のオブジェクトをprototypeを使って拡張するという手段を使わずにいたから発生していた部分があり、拡張することで「然るべきところに収まった」という感覚を得た時に、オブジェクトとは如何なるものかがちょっとわかったところがある。正しくわかったかどうかはわからないが、オブジェクトというものの輪郭が少し濃くなったと思う。

多分Smalltalkに馴染んでいたならば、関数でどうにかするという遠回りをせずにオブジェクトにメソッドを加えて機能を拡張することを当たり前にやったんじゃないかと思います。JavaScriptは関数も含めて全部オブジェクトなのにもかかわらず、JavaScriptでプログラミングをスタートするとオブジェクトをオブジェクトとして触るに至るまでにはちょっと時間が必要になってしまっているのではないか。(単に私の理解が遅かっただけかもしれない。)

「Functionオブジェクトのメソッド/プロパティ」、というようなものを理解できるようになるまでに一年以上かかったことになる…。すぐわかる人はわかるんだろうけど私はそのくらいかかってしまった。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。