ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    開眼! JavaScript ―言語仕様から学ぶJavaScriptの本質

    このエントリーを含むはてなブックマーク はてなブックマーク - 開眼! JavaScript ―言語仕様から学ぶJavaScriptの本質 あとで読む
    JavaScriptの入門書で「開眼! JavaScript」というコンパクトな本があります。

    開眼! JavaScript ―言語仕様から学ぶJavaScriptの本質
    Cody Lindley
    オライリージャパン
    2013-06-19
    ¥ 2,376


    ・JavaScriptの言語的特徴のまとめ本
    ・JavaScriptの「オブジェクト」を中心に説明
    ・陥りがちな落とし穴であるthis、プロトタイプチェーン(継承)、スコープチェーンなどをサンプルを使って解説
    ・サンプルコードは、「JSFiddle」(JavaScriptをテストできるWebサービス)上に用意されており、すぐ動作確認できます
    ・「どのように」、「なぜ」動作するのかを知ることで、JavaScriptを心から理解する「目覚め」を体験してください、とのこと。

    ●目次
    O'Reilly Japan - 開眼! JavaScript

    訳者まえがき

    はじめに

    1章 JavaScriptオブジェクト
    1.1 オブジェクトの生成
    1.2 コンストラクタ関数は オブジェクトインスタンスを構築して返す
    1.3 ネイティブ/ビルトインオブジェクトのコンストラクタ
    1.4 ユーザ定義の(ネイティブではない)コンストラクタ関数
    1.5 new演算子とコンストラクタ関数でインスタンス生成
    1.6 リテラルを使って値を生成
    1.7 プリミティブ型(基本型)の値
    1.8 null、undefined、'string'、10、true、falseはオブジェクトではなくプリミティブ型
    1.9 プリミティブ値はどのように保存・複製されるか
    1.10 プリミティブ値は、値そのものを比較
    1.11 プリミティブ型の文字列、数値、真偽値はオブジェクトのように扱うとオブジェクトのように
    ふるまう
    1.12 オブジェクト(複合型の値)
    1.13 オブジェクトはどのように保存・複製されるか
    1.14 オブジェクトは同値判定に参照を使用
    1.15 オブジェクトは動的なプロパティを持つ
    1.16 typeof演算子の戻り値
    1.17 動的プロパティはミュータブル(可変)オブジェクトを可能にする
    1.18 すべてのコンストラクタのインスタンスはコンストラクタ関数にポイントする
    constructorプロパティを持つ
    1.19 instanceof演算子を使ってコンストラクタ関数を特定する
    1.20 インスタンスは自身のプロパティを持つことができる(インスタンスプロパティ)
    1.21 「JavaScriptオブジェクト」と「Object()オブジェクト」の意味

    2章 オブジェクトとプロパティを扱う
    2.1 オブジェクトはすべての値をプロパティとして格納できる
    2.2 オブジェクトと配列でツリー構造や多次元配列を実現
    2.3 ドット記法とブラケット記法でオブジェクトのプロパティにアクセス
    2.4 delete演算子でプロパティを削除する
    2.5 プロパティへの参照はどのように解決されるのか
    2.6 hasOwnProperty()を使って、プロパティがプロトタイプチェーン経由ではないことを確認
    2.7 in演算子を使って、オブジェクトがプロパティを保持しているかどうかを確認する
    2.8 for-inループを使って、プロパティを列挙する
    2.9 ホストオブジェクト
    2.10 Underscore.jsを使ってオブジェクトを拡張する

    3章 オブジェクト(Object())
    3.1 Object()オブジェクト
    3.2 Object()のパラメータ
    3.3 Object()が持つプロパティとメソッド
    3.4 Object()のインスタンスのプロパティとメソッド(String.prototypeのプロパティ)
    3.5 Object()オブジェクトをオブジェクトリテラルで生成する
    3.6 すべてのオブジェクトはObject.prototypeから継承する

    4章 関数(Function())
    4.1 Function()オブジェクト
    4.2 Function()のパラメータ
    4.3 Function()が持つプロパティとメソッド
    4.4 Function()のインスタンスのプロパティとメソッド(Function.prototypeのプロパティ)
    4.5 関数は常に値を返す
    4.6 JavaScriptの関数は第一級関数
    4.7 関数に引数を渡す
    4.8 thisとargumentsはすべての関数本体で利用できる
    4.9 arguments.callee
    4.10 関数インスタンスのlengthプロパティとarguments.length
    4.11 引数を再定義
    4.12 関数の実行を中断
    4.13 関数の定義方法(宣言、式、もしくはコンストラクタ)
    4.14 関数の実行方法(関数、メソッド、コンストラクタ、もしくはcall()とapply())
    4.15 無名関数
    4.16 関数式を即時実行
    4.17 無名関数を即時実行
    4.18 関数は入れ子可能
    4.19 関数を関数に渡し、関数から関数を返す
    4.20 関数宣言を使って、定義される前に関数を実行する(関数の巻き上げ)
    4.21 関数は自身を呼ぶ事ができる(再帰)

    5章 グローバルオブジェクト
    5.1 グローバルオブジェクト
    5.2 グローバル関数
    5.3 グローバルプロパティ、グローバル変数
    5.4 グローバルオブジェクトにアクセスする
    5.5 グローバルオブジェクトは暗黙的に参照される

    6章 this
    6.1 thisとは何か、およびthisは何を参照するか
    6.2 thisの値はどのように決められるのか?
    6.3 入れ子関数内では、thisはグローバルオブジェクトを参照する
    6.4 入れ子関数内でthisを見失う問題をスコープチェーンを使って回避する
    6.5 call()やapply()を使ってthisの値をコントロールする
    6.6 thisキーワードをユーザ定義のコンストラクタ関数で使う
    6.7 プロトタイプメソッド内のthisは生成されるインスタンスを参照する

    7章 スコープとクロージャ
    7.1 JavaScriptのスコープ
    7.2 JavaScriptはブロックスコープを持たない
    7.3 関数内で変数を定義する際は常にvarを使い、スコープの穴を避ける
    7.4 スコープチェーン(静的スコープ)
    7.5 スコープチェーンの検索は最初に発見した値を返す(マスキング)
    7.6 スコープは関数実行時ではなく関数定義時に決められる
    7.7 クロージャはスコープチェーンによって生成される
    7.8 グローバルスコープで宣言されている関数もクロージャである

    8章 関数のprototypeプロパティ
    8.1 プロトタイプチェーン
    8.2 なぜprototypeプロパティが重要なのか
    8.3 prototypeプロパティはすべてのFunction()インスタンスに自動的に付与される
    8.4 prototypeプロパティのデフォルト値はObject()オブジェクト
    8.5 コンストラクタ関数から生成されたインスタンスはそのコンストラクタの
    prototypeプロパティにリンクする
    8.6 プロトタイプチェーンの終着点はObject.prototype
    8.7 プロトタイプチェーンは最初に見つけたプロパティを返す
    8.8 prototypeプロパティに新しいオブジェクトを設定するとデフォルトの
    constructorプロパティを失う
    8.9 プロトタイプからプロパティを継承するインスタンスは常に最新の値を取得
    8.10 prototypeプロパティを新しいオブジェクトに置き換えた場合、過去のインスタンスは
    更新しない
    8.11 ユーザ定義コンストラクタもプロトタイプ継承を行うことができる
    8.12 継承チェーンを生成する

    9章 配列(Array())
    9.1 Array()オブジェクト
    9.2 Array() パラメータ
    9.3 Array()のプロパティとメソッド
    9.4 Array()のインスタンスのプロパティとメソッド(Array.prototypeのプロパティ)
    9.5 配列を生成する
    9.6 要素の追加・変更
    9.7 lengthとインデックス
    9.8 指定した数の要素を持った配列を生成する
    9.9 配列のlengthを設定して要素の追加・削除
    9.10 配列を配列に格納(多次元配列)
    9.11 配列の要素を前から・後ろからループする

    10章 String()
    10.1 String()オブジェクト
    10.2 String()で文字列オブジェクトを生成、そして値を文字列に変換
    10.3 String()のプロパティとメソッド
    10.4 String()のインスタンスのプロパティとメソッド(String.prototypeのプロパティ)

    11章 Number()
    11.1 Number()オブジェクト
    11.2 整数と小数
    11.3 Number()に引数を渡して数値に変換
    11.4 Number()のプロパティとメソッド
    11.5 Number()のインスタンスのプロパティとメソッド(Number.prototypeのプロパティ)

    12章 Boolean()
    12.1 Boolean()オブジェクト
    12.2 Boolean()のパラメータ
    12.3 Boolean()のプロパティとメソッド
    12.4 Boolean()のインスタンスのプロパティとメソッド(Boolean.prototypeのプロパティ)
    12.5 真偽値オブジェクトは格納されている値がfalseであってもtrueと評価される
    12.6 いくつかの値はfalse、それ以外はすべてtrueに変換

    13章 プリミティブ型文字列、数値、真偽値
    13.1 プリミティブ値は、プロパティにアクセスされるとオブジェクトに変換される
    13.2 文字列、数値、真偽値は常にプリミティブ型を使う

    14章 null
    14.1 null
    14.2 typeof nullは'object'を返す

    15章 undefined
    15.1 undefined
    15.2 JavaScript ECMA-262 Edition 3以降ではundefined変数が存在

    16章 Math関数
    16.1 ビルトインMathオブジェクト
    16.2 Mathが持つプロパティとメソッド
    16.3 Mathはコンストラクタ関数ではない
    16.4 Mathオブジェクトは変更・削除不可

    付録A レビュー

    付録B 終わりに

    索引



    ●無料のPDF版(英語)
    本書の原書は英語で、無料のPDF版が公開されていました。

    『開眼! xx』シリーズって原著は無料なんだね - ファイヤードブログ

    この原著がWebで無料配布されていることを知りました。
    PDFで配布されています。
    たまに、原著名で検索すると違法ダウンロードサイトっぽいのが出てくることがありますが、ドメインを取得しているところやオライリーへのリンクが貼ってあるところなどから、非海賊版と見なしても大丈夫だろうと判断しました*1。
    リンク => JavaScript Enlightenment | by Cody Lindley | 1st Edition | ECMA-262, Edition 3



    英語の勉強も兼ねて、英語版を読むという手もあります。

    ・最初に、日本語版を読んで内容を理解しておく。
    ・次に、英語版を読んで、JavaScriptで英語を勉強する。

    英語力が求められるエンジニアには、一石二鳥の勉強法ですね!

    ●開眼!シリーズ
    著者のCody Lindleyさんは、他にも
    ・DOM
    ・jQuery
    のまとめも書いていました。

    開眼! DOM DOM Enlightenment - Exploring the relationship between JavaScript and the modern HTML DOM
    開眼! jQuery jQuery Enlightenment | by Cody Lindley | 1st Edition | based on jQuery 1.3.2

    cody lindley(@codylindley)さん | Twitter
    Cody Lindley | Front-end/Client-side/JavaScript Engineer

    ●JSFiddle
    オンラインでJSをテストできるWebサービス「JSFiddel」についてメモ。
    jsfiddle - Google 検索
    ブラウザ上でHTML / CSS / Javascriptを書いてその場で実行、ブログ等にも貼付できるjsfiddleの基本的な使い方をざっくりと - かちびと.net
    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/1392-a264ba44

    FC2Ad