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

JavaScriptパターン #1

JavaScriptパターン ―優れたアプリケーションのための作法

JavaScriptパターン ―優れたアプリケーションのための作法

JavaScriptでできること

  • クライアントサイド(いわゆるJavaScript)
  • サーバサイド(.NETやNode.js)
  • デスクトップアプリケーション
  • アプリケーションの拡張(ブラウザ、Photoshop...)
  • モバイルアプリケーション
  • コマンドラインスクリプト

パターン

パターン=典型的な問題に対する解決方法(ベストプラクティス)

JavaScriptの重要な概念

オブジェクト指向

数値、文字列、ブール値、null、undefined以外(プリミティブ型以外)は全てオブジェクト。

変数、関数 -> オブジェクト -> キーと値の組(プロパティ)のリスト

オブジェクトの種類は2つ

  • ネイティブ(組み込みオブジェクト(Array、Date...)やユーザが定義するオブジェクト(var o = {})
  • ホスト(windowやDOMオブジェクト)
クラスは無い

必要になったときに空のオブジェクトを作成しておいて、後からメンバを追加する。(「クラス継承よりオブジェクトのコンポジションが好ましい」)

プロトタイプ

継承はプロトタイプ(全ての関数が持つプロパティ)を使う。

> function fn() {}
> fn.prototype
fn
// プロトタイプオブジェクトのconstructorプロパティは関数を指す
> fn.prototype.constructor
function fn() {}

// オブジェクトリテラルで生成したオブジェクトのconstructorプロパティは
// 組み込みのObject()
> var o = {}
> o.constructor
function Object() { [native code] }

ECMAScript 5

DOMなどの余分なホストオブジェクトを含まないコアJavaScript言語の土台。

ECMAScript5の重要な追加機能 : strictモード
function fn() {
  "use strict";
  // ...
}

言語から機能を取り除き、プログラムをよりシンプルにする。(例えば、with文はstrcitモード内では使えない)
strictモードは文字列で起動するので、対応していないブラウザであれば無視される。

JSLint

コードの品質チェックツール
http://www.jslint.com/

コンソール

Firefox = Firebug
Webkit系 = Web Inspector
IE 8~ = Developer Tools