true使い方はこちら。ちなみに、NaNは、NaNを含む全ての値と等しくない。NaNを検出するにはisNaN関数を使用します。true使い方はこちら。文字列の操作(部分抽出等)に重宝します。"Qiita"Stringは配列のように扱えますが配列ではありません(例えばmap()やsplice()は使えない)。"Q"RegExpオブジェクト正規表現を司ります。した使い方は以下のような感じ。Editionが上るにつれて進化しているので、最新仕様をご確認のこと。/正規表現/オプション;argumentsオブジェクト関数の引数の情報を管理する配列ライクなオブジェクト1。parametersにより代替できると考えられます。再帰関数を作る時にcalleeプロパティが役に立ちます。calleeの代わりに関数名を直書きした場合、関数名を変更した時に修正が必要。匿名関数の場合は、関数名がないのでcallee一択。6Objectオブジェクトすべてのオブジェクトの元になっているオブジェクトで、すべてのオブジェクトはObject.prototypeからメソッドとプロパティを継承しています。ところで、toString()は指定したオブジェクトを表す文字列を返します。toString()は人知れず内部的に使われていることがあります。暗黙の型変換の如く、オブジェクトが文字列に変換されていたりします。1,2,3匿名(無名)オブジェクトというものがあります。再利用する必要がない場合に利用します。オブジェクトを宣言した後に外からプロパティを設定できる。ES2015で追加されたオブジェクトProxy、Reflect、Map、Set、WeakMap、WeakSet、Promise(後述)など。日本語の文法は単数形、複数形を持たないため、上記では単数形の方に『』を付けてそれぞれを区別しています。objectは他のオブジェクトのようにインスタンス化するものではなく、グローバル関数等を管理するための領域と考えられます。グローバルプロパティや関数の使い方はこちら。JavaScriptではところどころで暗黙的に型変換が行われますが、明示的に行うこともできます。バグを出さないために、関数の癖をつかんでおく必要があります。encodeURIComponentなんかも要チェック。escape()は非推奨。eval()はセキュリティホールになりがちなので要注意、パフォーマンスもいまいちらしい。Standardなどを参照しているようです)。共通して使えるものもたくさんありますが、標準ではありません。異るブラウザで動作するようにコードを作るのは大変です。標準化されているDOMを操作するオブジェクトを利用するのが望ましいという考え方もあります。Objectがあります。ブラウザオブジェクトは階層構造になっているそうです。参考資料中にあるDocumentオブジェクトはw3schoolsが示すブラウザオブジェクトの中には見当たりません。objectへの参照を返します。objectへの参照を返します。objectへの参照を返します。objectへの参照を返します。Window.documentプロパティは、読み取り専用で、そのウィンドウが含むdocumentへの参照を返します。ここで、Windowとwindowの違いを確認しておきます。Overflowによると、Windowはfunctionで、windowはグローバル変数です。windowはWindowのインスタンスを保持しています。Objectdocumentについては後述しますが、windowのプロパティにアクセスする時、window.を明記してもしなくても構いません。Windowは開発者が触るもんじゃないようです。confirm()なども同様に使えます。ObjectざっくりURLの情報を取得するのに使うオブジェクトという認識。ObjectざっくりURLの操作に使うオブジェクトという認識。Objectざっくりブラウザが管理する閲覧履歴の操作に使うオブジェクトという認識。Objectざっくりユーザーエージェントの操作に使うオブジェクトという認識。DocumentwindowよろしくdocumentもDocumentのインスタンスを保持していると考えればいいのかしら。DOMの操作に使うオブジェクトという認識。name="textName"></form>HTMLFormElementを使って<form>を操作する。document.formNameで取得した<form>の属性にdocument.formName.<属性名>でアクセスすることもできる。HTMLInputElementオブジェクトを使って<input>を操作する。ラジオボタンやチェックボックスの場合はNodeListを継承しているRadioNodeListで操作する。<select>は、HTMLSelectElementで操作する。プロトタイプベースなオブジェクト指向JavaScriptにはクラスという概念はなく、プロトタイプという概念がある。プロトタイプオブジェクトというものがあり、すべてのオブジェクトはプロトタイプオブジェクトのメソッドとプロパティを継承する。newすることを想定した関数オブジェクトのことをコンストラクタと呼ぶ。コンストラクタは戻り値を返してはならない。オブジェクトに対して外部からメンバを追加できる。その結果、同一のコンストラクタをもとに生成されたインスタンスであっても、それぞれが持つメンバが異なる場合がある。JavaScriptにおけるクラスベース風なオブジェクト指向ES2015でクラスベース風なオブジェクト指向の書式が導入されたが、これはシンタックスシュガー(糖衣構文)で、JavaScriptのオブジェクト指向は引き続きプロトタイプベース。ちなみに、厳密には"メソッド"という言い方はふさわしくないかもしれませんが、本稿では便宜的にそう呼びます。クラスベースの言語が定義する形式の「メソッド」はありません。どの関数も、オブジェクトのプロパティという形で追加することができます。Mike.さて、コンストラクタをnewして生成されるインスタンスは、個々に異るメモリ領域を確保します。上記の例でPersonのインスタンスを複数作成すると、全てのインスタンスは同じintroduceメソッドを持ちますが、それぞれ別のメモリ領域を確保してしまいます。この非効率を、prototypeプロパティを用いて解消します。prototypeはデフォルトで空のオブジェクトを参照していて、これにメンバを追加できます。以下の様にコードを書き換えます。Mike.Personはprototypeプロパティを通じてcallmeメソッドを参照しています。Personを元にして生成されたpersonもcallmeメソッドを参照しています。person.callme()のようにしてcallmeメソッドを利用できます。Person('Mary');のようにして生成したanother_personもcallmeメソッドを参照しており、another_person.callme()のようにして利用できます。callme()はメモリ上に一つあり、個々のインスタンスはそれを参照するため、別々のメモリ領域を確保することはありません。プロトタイプにメソッドをたくさん定義する時は、以下の様にすると楽です。M.prototype中のメソッドを書き換えると、それを参照する全てのインスタンスに影響があります。ところで、personインスタンスに後から追加したcallmeメソッドはpersonに固有のメソッドとなり、Personから生成される他のインスタンスに引き継がれることはありません。(ゆえに、同一のコンストラクタをもとに生成されたインスタンスであっても、それぞれが持つメンバが異なるケースが発生します。)プロトタイプチェーンあるオブジェクトのプロパティにアクセスを試みるとき、そのオブジェクトのみならず、そのオブジェクトのプロトタイプ、プロトタイプのプロトタイプ...と、一致する名前のプロパティが見つかるか、プロトタイプチェーンの終端に到達するまで、そのプロパティが捜索されます。MDN上記の例で、person.callme()というコードが実行される時、まずpersonの中にcallmeメソッドを探しに行きます。存在しないため、プロトタイプの中に探しに行きます。そこで見つかったので実行します。ここで確認しておきたいことがあります。Person.prototype.callmeが定義済みの状態で、以下のコードを実行します。'.';}この時、プロトタイプチェーンを辿りプロトタイプの中のcallmeメソッドを書き換えることはありません。この場合、person中に新たにcallmeメソッドが定義されます。その後、person.callme()を実行すると、プロトタイプチェーンの仕組みに則り、personの中にcallmeメソッドを探しに行きます。そこで見つかるため実行します。プロトタイプ中のcallmeメソッドが上書きされることはないので、他のインスタンスに影響を与えることはありません。ここまでの内容を、もし俺がまとめてこられてきてたとしたら2、こう。May.もう一つ注意事項があります。