kidoOooOoooOOomスマートフォン用の表示で見るkidoOooOoooOOomゲーム開発やってます2013-12-11開眼JavaScript読書メモJavaScriptの勉強始めたのでメモ。単行本(ソフトカバー)この商品を含むブログを見るJavaScriptオブジェクトJavaScriptの世界では、ほぼすべてがオブジェクトそのものか、もしくはオブジェクトのようにふるまう。オブジェクトとは、名前と値を持つプロパティを格納するコンテナにすぎない。演算子を伴って呼び出された場合、コンストラクタ関数は特別な役割をする。コンストラクタ関数のthisの値として、これから新たに生成されるオブジェクトを設定する。本来return文を宣言しない場合にはfalse相当の値を返すところ、コンストラクタ関数はその代わりに新たに生成されるオブジェクト(thisで参照されるオブジェクト)を返す。コンストラクタ関数は大文字で始めるのが通例オブジェクトの生成はリテラルを用いたほうが便利。リテラルはnew演算子が行うことを隠ぺいしているにすぎない。オブジェクトではなくプリミティブ型プリミティブ型は値がメモリに保存され操作さえる。比較も値そのものを比較する。プリミティブ型はオブジェクトのように扱うとオブジェクトのようにふるまう。constructorプロパティを持つオブジェクトとプロパティを扱うドット記法とブラケット記法でオブジェクトのプロパティにアクセス一般的にはドット記法を用いるが、数値始まりや予約語を用いたプロパティにはブラケット記法でないとアクセスできない。オブジェクト内に存在しないプロパティにアクセスしようとすると、JavaScriptは常にプロトタイプチェーンをたどってそのプロパティを探し当てようとする。hasOwnProperty()を使って、プロパティがプロトタイプチェーン経由ではないことを確認できる。in演算子を使って、オブジェクトがプロパティを保持しているかどうかを確認できるが、プロトタイプチェーンも全て辿ってしまう。WebブラウザなどのJavaScript実行環境は「ホストオブジェクト」と呼ばれる複数のオブジェクトを持っている。Webブラウザ環境では、windowオブジェクトと、windowオブジェクトに保持されているすべてのオブジェクトがホストオブジェクト。JavaScript言語仕様とホストオブジェクトの間には何も関係が無いブラウザは一般的にホストオブジェクトとネイティブオブジェクトを区別するUnderscore.jsを使ってオブジェクトを拡張できる。便利なユーティリティライブラリ。オブジェクト(Object())オブジェクトリテラルとは{}や{a:10,b:20}のように、波括弧を使用してプロパティを格納した状態の表現。function演算子(関数リテラル)を使う方法で生成する。thisArgにthisの値を渡し、argArrayに渡された配列を引数リストとして関数を実行する。...]])は、thisArgにthisの値を渡し、関数を実行する。第2引数以降の引数が実行関数の第1引数〜となる。undefinedが返される。JavaScriptの関数は第1級関数。wikipediaなどで参考。関数式は関数定義の後に()演算子を付与することによってその場で実行する。関数宣言を使って定義される前に関数を実行することが可能。これを関数巻き上げと呼ぶ。グローバルオブジェクトJavaScriptのコードはオブジェクトに格納されている必要があります。Webブラウザ環境でJavaScriptコードを書く場合には、windowオブジェクト内にJavaScriptを格納し、windowオブジェクト内で実行する必要がある。このwindowオブジェクトに相当するものが「グローバルオブジェクト」。JavaScriptはあらかじめ定義されている関数をいくつか持っている。これをグローバル関数とよぶ。グローバルオブジェクト直下に格納されているのが、グローバルプロパティ、グローバル変数。var演算子を伴って変数を宣言する場合、その変数はグローバル変数となり、var演算子を使用しない場合はグローバルプロパティとして宣言される。delete演算子で消せるかどうか。グローバルオブジェクトは暗黙的に参照されるため、通常は参照を使うことはない。明示的にグローバルオブジェクトを指定する場合、計算コストがほんのわずか上昇する。this関数が実行される際、thisキーワードの値が設定される。このときに設定される値は、関数を呼び出すオブジェクトへのリンク。thisの値は、関数が実行時に呼びだされる際のコンテクストに依存する。入れ子関数内では、thisはグローバルオブジェクトを参照する。thisを見失うことがない。thisをコントロールできる。演算子を使ってコンストラタ関数を呼び出す場合、thisの値はコンストラクタ関数内で新たに生成されるインスタンスを参照する。プロトタイプメソッド内のthisは生成されるインスタンスを参照するスコープとクロージャJSでは、コードが実行されるコンテクストにスコープが割り当てられる。スコープには、グローバルスコープ、ローカルスコープ(関数スコープともいう)、evalスコープの3つのタイプがある。使って宣言された変数にはローカルスコープが適用され、その変数は宣言した関数内の他の式からのみ参照することができる。JSは他の言語でよくみるブロックスコープは持たないので注意!スコープチェーンの検索は最初に発見した値を返す。スコープは関数実行時ではなく関数定義時に決められる。クロージャはスコープチェーンによって生成されるクロージャを一言で表すと「スコープチェーンによって存在する変数への参照を保持している関数」と言える。クロージャが生成されるとスコープチェーン上の変数への参照は保持される。親関数スコープで定義されている変数は、たとえ親関数自身が使われなくなったとしても、それらを参照するクロージャが生き残っている限り保持される。prototypeプロパティは、Function()のインスタンスを生成する際にJavaScriptが自動的に付与するオブジェクト。prototypeプロパティは、new演算子を使って、もしくはリテラルを使って生成されたインスタンスオブジェクトからコンストラクタ関数を参照できるリンクを提供する。Object.prototypeにさかのぼるまで連鎖する。このリンクの連鎖をプロトタイプチェーンと呼ぶ。プロトタイプチェーンによって、生成された各インスタンスの間でコンストラクタ関数が(prototypeプロパティに)持つメソッドやプロパティを「共有」「継承」することが可能になる。プロトタイプチェーンは最初に見つけたプロパティを返す。nullnullを使って、オブジェクトのプロパティが値を持っていないkとおを明示的に示すことができる。nullを使うべきundefined2つの異なる方法で使用される。(3)注目記事スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。