読者です 読者をやめる 読者になる 読者になる

ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

英語でプログラミング言語を学ぶ「JavaScript: The Good Parts 」Object編

はじめに

以前vagrantのドキュメントを日本語訳する記事を書いたとき、英語読む機会増やさないと、と書いた。

take-she12.hatenablog.com

一方不定期でskypeで勉強会をしている同期と、javascriptそろそろやるかーというくだりになって、どの本にしようか?となったときに、上記のくだりがあって同期氏が提案してくれたのがこの本。

JavaScript: The Good Parts

JavaScript: The Good Parts

_人人人人_
> 英語 <
 ̄Y ^ Y ^ Y ̄

なんとpdfが無料である。素晴らしい。

javascript_the_good_parts

3章 Object

1章が概念の説明、2章は文法なので、飛ばして3章からやろうということに。復習がてら内容をメモしておく。

Object Literals

  • nestできる
  • カンマ区切り
     var empty_object = {};
     var stooge = {
         "first-name": "Jerome",
         "last-name": "Howard"
};

Retrival

  • オブジェクトの内容を[""]で検索できる。
  • ピリオドで深く掘ることができる。こちらのほうが簡潔で好ましい。
  • 予約語のときはstringの方法(ダブルクォート)がいい
  • 存在しないものを探そうとするとundefinedが返る
  • ||を使うことで存在しない場合のデフォルト値を定義できる
  • undefinedから値を取り出そうとするとTypeError例外が発生する。&&でガードすることができる。

Update

  • propertyに既に値が与えられていれば、書き換えることができる。

Reference

  • 参照渡し

Prototype

  • 全てのオブジェクトはプロトタイプと接続されている。
  • プロトタイプリンクは探索でしか使われない。
  • プロトタイプのリンクをのぼっていき、最期まで存在しなければundefinedが返る。

Reflection

  • typeof演算子で簡単にobjectのプロパティの型を調べることができる。
  • 連鎖したprototypeの値が返されることに注意する。
    • functionの値を回避すること
    • hasOwnPropertyメソッドを使うこと

Enumration

  • for inの表記でオブジェクトのpropertyをloopで扱うことができる
  • loop内部であなたが必要のないpropertyを除くことができる
  • 順番には一切関与しない
  • 順番を考えたいなら配列を使うとよい。

Delete

  • objectからpropertyを取り除くときにdeleteを使います
  • prototype-linkには関与しない

Global Abatement

気づき

英語を英語で読むこと

最初は個人で1章を読んでいたんだけど、ひたすら時間がかかってました。全部日本語訳しちゃいけないってわかってるのに勝手に、訳そうとしちゃうんですね。要点だけメモに残そうとしているのに結局全訳書いとるやないかい!ってなってました。

ただ読み続けていくと、英語を英語として読む感覚がわかってきました。例えばprototype-linkはprototype-linkだし、functionもfunctionで(関数とも言えるけど)無理に訳さずその英単語のまま概念を捉えることができるようになりました。

あと、同期氏が1章を読んで「ここはさらっと読み流すぐらいでいいと思う、こういう感じのことぐらいしか書いてない。」って言うのを聞いて、いや、それちゃんと読んでるやん!って思ったんだけど、英語に慣れてくると、何が主張なのか、この文はそんなに重要ではないな、みたいな文脈がだんだんわかってきました。英語に慣れていないとその判別がつかないから全部ちゃんと訳したくなっちゃうんだろうと。

これは大進歩ですね。

複数のプログラミング言語を学ぶこと

これが1番の狙いだったんですが、Rubyでいうclass、Javaでいう継承、というように、概念を他言語に例えながらコミュニケーションを取れるのは大きかったですね。逆にこの本は(日本語の本を読んでませんが)最初の言語だったら難しいと思う。そもそも入門本ではないと思うけど。

今後

4章のfunction、付録AのAwful Parts、付録Bのbad Partsをやって、それから何かモノを作ろうという方針になりました。時間をかけすぎるのもよくない。でも本当にいい挑戦ができてると思います。ありがたいことです。