はじめに
以前vagrantのドキュメントを日本語訳する記事を書いたとき、英語読む機会増やさないと、と書いた。
一方不定期でskypeで勉強会をしている同期と、javascriptそろそろやるかーというくだりになって、どの本にしようか?となったときに、上記のくだりがあって同期氏が提案してくれたのがこの本。
- 作者: Douglas Crockford
- 出版社/メーカー: Oreilly & Associates Inc
- 発売日: 2008/05
- メディア: ペーパーバック
- 購入: 2人 クリック: 18回
- この商品を含むブログ (9件) を見る
_人人人人_
> 英語 <
 ̄Y ^ Y ^ Y ̄
なんとpdfが無料である。素晴らしい。
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
- JavaScriptは簡単にグローバル変数を定義できる
- 残念ながらグローバル変数は問題解決から遠ざける
- グローバル変数の使用を減らすには、単一のグローバル変数を作ることだ。
- これは他のライブラリに悪い影響を与える可能性を減らす
- トップレベルにMYAPPとあると読みやすくもなる。
気づき
英語を英語で読むこと
最初は個人で1章を読んでいたんだけど、ひたすら時間がかかってました。全部日本語訳しちゃいけないってわかってるのに勝手に、訳そうとしちゃうんですね。要点だけメモに残そうとしているのに結局全訳書いとるやないかい!ってなってました。
ただ読み続けていくと、英語を英語として読む感覚がわかってきました。例えばprototype-linkはprototype-linkだし、functionもfunctionで(関数とも言えるけど)無理に訳さずその英単語のまま概念を捉えることができるようになりました。
あと、同期氏が1章を読んで「ここはさらっと読み流すぐらいでいいと思う、こういう感じのことぐらいしか書いてない。」って言うのを聞いて、いや、それちゃんと読んでるやん!って思ったんだけど、英語に慣れてくると、何が主張なのか、この文はそんなに重要ではないな、みたいな文脈がだんだんわかってきました。英語に慣れていないとその判別がつかないから全部ちゃんと訳したくなっちゃうんだろうと。
これは大進歩ですね。
複数のプログラミング言語を学ぶこと
これが1番の狙いだったんですが、Rubyでいうclass、Javaでいう継承、というように、概念を他言語に例えながらコミュニケーションを取れるのは大きかったですね。逆にこの本は(日本語の本を読んでませんが)最初の言語だったら難しいと思う。そもそも入門本ではないと思うけど。
今後
4章のfunction、付録AのAwful Parts、付録Bのbad Partsをやって、それから何かモノを作ろうという方針になりました。時間をかけすぎるのもよくない。でも本当にいい挑戦ができてると思います。ありがたいことです。