はじめに
前回はこちら
続きからやってく
文と式
評価した結果を変数に代入できるものは式、それ以外は文っていう認識で良さそう
この辺り曖昧だったから前回の記事もめちゃくちゃかも...
条件分岐
この辺りはRubyとそんなに変わらなそう
case
使うときに明示的にbreak
しないと処理が継続するところがちょっと違う
ループと反復処理
この辺りもRubyっぽい感じ
コールバック関数を使っていい感じに処理を書くのがjsっぽいのかな?
continue
はnext
的な感じで使えそう
オブジェクト
オブジェクトがプロパティを持っていて、それを呼んでいるだけってところがRubyと違うのかな?
Rubyだとクラス(オブジェクト)があってメソッドがあるけど、jsには実体としてオブジェクトがあって、そのオブジェクトのプロパティを呼んでるだけっていう理解であってるかな...
プロトタイプオブジェクト
オブジェクト作成時にプロトタイプオブジェクトが作成されて、それがオブジェクトのプロトタイプを継承しているためプロトタイプメソッドが使える...
何となくは分かったけど、いろんな用語が出てきすぎて訳分からなくなる
オブジェクトのインスタンスメソッドとオブジェクトのプロパティって一緒の意味なのかなと思ったけど、言い分けてる違いは何だろう...
プロパティが関数の場合はインスタンスメソッドっていう呼び方?
あとそもそもJavaScriptでいう『オブジェクト』っていうのは連想配列key,valueの形の{}
のことなのか、それともプリミティブ型以外のもの全てのことなのか?
とりあえずどんな値も先祖はObjectのプロトタイプで、そこで定義されてるプロパティを呼び出せるってことかな
配列
割とRubyと似た感じ
この辺りは実際触るときにメソッド調べながら実装になりそう
ただ破壊的、非破壊的メソッドはハマりそう...
文字列
同上
ラッパーオブジェクト
プリミティブ型はオブジェクトじゃないのに何でメソッドが呼べるのかが分かった
JavaScriptでは、プリミティブ型の値に対してプロパティアクセスするとき、自動で対応するラッパーオブジェクトに変換されます。 たとえば"string"という文字列は、自動的にnew String("string")のようなラッパーオブジェクトへ変換されています。 これにより、プリミティブ型の値である文字列がStringのインスタンスメソッドを呼び出せるようになります。
ここでいう『プロパティアクセス』と『インスタンスメソッド』は別の意味なのかな? ちょっと用語がややこしい気がする...
関数とスコープ
クロージャーとかスコープは何となくRubyと比べて違和感ないので、今は大体の理解で良さそう
感想
用語の意味がよく分かってない感じがする
一応仕組み自体は何となく分かったけど、もっと突き詰めて理解したいなぁと思う