JavaScriptを理解する(三)
13212 ワード
JavaScriptの中のコンストラクタ
コンストラクタとは何ですか?
コンストラクタはコンストラクタとも言います.それは普通の関数です.
例:
構造関数の内部はどうやって働きますか?
関数名の最初の文字は大文字です.これは強制行為ではなく約束です.ほとんどのJavaScriptプログラマはこの約束を守ります.すなわち最初の文字の大文字の関数名はコンストラクションです.もちろん、最初の文字小文字の関数は、構造関数として機能することができます.
使用
したがって、このような構造関数によって作成されたオブジェクトは、ほぼ同じである.
コンストラクタの役割
1.オブジェクトを作成するためのテンプレート
少数のオブジェクト(例えば一つ)を作成するだけでは、構造関数を作成することはあまり意味がない.しかし、重複してオブジェクトを作成する必要がある場合、構造関数は明らかにDRY(Don't Repeat Youself)のベストな選択です.
重複符号化の作業量を減らすだけでなく、入力パラメータを検証したり、間違った機能を投げたりすることがよくあります.構造関数によっても完成できます.
2.オブジェクトの種類として使用するタグ
コンストラクタを使って作成したオブジェクトは、その種類を簡単にチェックできます.
これはコンストラクタを使用する最も重要な理由かもしれません.プロトタイプ継承に基づくJavaScriptは、メンバー属性をオブジェクトに拡張するのに便利です.
ちょっと注意してください.
立体関数を使ってオブジェクトを作成するには、必ず使用します.
これは、本当に新しいオブジェクトを作成するのはコンストラクションではなく、コンストラクションであるからです.
このため、使用を忘れました.
もちろん、この改善は確かですが、「スマート」ではないので、構造関数を自分で判断して自動的に使うことができます.
コンストラクタとは何ですか?
コンストラクタはコンストラクタとも言います.それは普通の関数です.
new
オペレータが協力して特定の種類のオブジェクトを作成します.について new
オペレータ、私の理解JavaScript(一)にはさらに記述があります.例:
本例では、me
オブジェクトは特定のタイプを持っています. Person
オブジェクトに対する Person
そのタイプの名前です.構造関数の内部はどうやって働きますか?
普通の関数と比較して、二つの明確な違いがあります.以下のように説明します.関数名の最初の文字は大文字です.これは強制行為ではなく約束です.ほとんどのJavaScriptプログラマはこの約束を守ります.すなわち最初の文字の大文字の関数名はコンストラクションです.もちろん、最初の文字小文字の関数は、構造関数として機能することができます.
使用
this
ローカル変数をバンドルにします.一般的な関数はローカル変数を直接作成して値を保存します. this
ローカル変数をバンドルにするのは配合のためです. new
オペレータ.何故なら new
オペレータは新しいオブジェクトを作成し、新しいオブジェクトをコンストラクタの内部に結合します. this
に縛られています. this
上のローカル変数は、実際には新しいオブジェクトの属性となります.したがって、このような構造関数によって作成されたオブジェクトは、ほぼ同じである.
それなら、なぜコンストラクションを書きますか?コンストラクタの役割
1.オブジェクトを作成するためのテンプレート
少数のオブジェクト(例えば一つ)を作成するだけでは、構造関数を作成することはあまり意味がない.しかし、重複してオブジェクトを作成する必要がある場合、構造関数は明らかにDRY(Don't Repeat Youself)のベストな選択です.
重複符号化の作業量を減らすだけでなく、入力パラメータを検証したり、間違った機能を投げたりすることがよくあります.構造関数によっても完成できます.
2.オブジェクトの種類として使用するタグ
コンストラクタを使って作成したオブジェクトは、その種類を簡単にチェックできます.
3.オブジェクトの共有属性を作成するこれはコンストラクタを使用する最も重要な理由かもしれません.プロトタイプ継承に基づくJavaScriptは、メンバー属性をオブジェクトに拡張するのに便利です.
より良い構造関数ちょっと注意してください.
立体関数を使ってオブジェクトを作成するには、必ず使用します.
new
オペレータこれは、本当に新しいオブジェクトを作成するのはコンストラクションではなく、コンストラクションであるからです.
new
オペレータ.コンストラクタは新しいオブジェクトのテンプレートとして機能するだけで、受信します. new
作成したオブジェクトをテンプレートで塗りつぶします.このため、使用を忘れました.
new
危険です.ないから new
新しいオブジェクトを作成するときは、構造関数内の this
全体のオブジェクトに縛られます.通常は window
(ブラウザ)または global
(Node.js)です.何が起こるか見てみましょう.
どうやって構造関数を改善しますか?簡単です
この考え方は構造関数が受信したと判断します. this
自分の実例ではないかというと、何でもいいです.もしそうでないなら、誤ってユーザーに強制的に使うようにします. new
オペレータもちろん、この改善は確かですが、「スマート」ではないので、構造関数を自分で判断して自動的に使うことができます.
new
いいですねそうです.これはもっといい方法です.でもここでは披露しません.それともあなた自身で実践してみますか?(ヒント:構造関数の原型オブジェクトを考えてみます.思いつかないなら大丈夫です.後で話をします.)