を定義し、クラスの拡張を定義し、クラスの拡張
問題を定義しました。理論の関数クラスを拡張するための効果的な戦略をオブジェクトとして、以前のレシピを示し、それを関連付けるプロパティとメソッドを可能にする機能です。なぜ、それ以来、機能をクラスに変貌することができるクラスを作成するために必要ですか?その答えは、関数のインスタンスを考え出すの問題に関連しますが、関数内の関数を定義することができますJavaScriptのクロージャは、次のコードで示すように使用する。 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ functionsareobjects.html関数GetFunctionFixed()(ヴァール工大=関数()(assertEquals(inst.value)cmpval cmpval;)を返す工大;) ローカル変数を使用することにより、関数のインスタンスは、関数の実装の中で参照することができます。この作品が起こっているため、関数オブジェクトであり、これを参照するオブジェクトを返します。ソリューションの原則は、関数オブジェクトが使用することが可能です、新しいキーワードを使用せずにクラスを作成するとして、これは関数の関数内でのビルドは、次の例で示すテクニック。 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ definingextendingclasses.html関数CreateClassInstance()(ヴァール工大=関数()(= 10 inst.instantiated; =関数inst.method()(= 20 inst.instantiated;))工大();戻り工大;) これを呼び出す関数は、関数のプロパティを代入するクラスの例では、"クラス"が作成されます。このように、関数は、"クラスと同じように動作します。"変数工大"クラス全体で、"可能性への参照のプロパティとは、"クラスのメソッドを参照している。"実際には、"クラス"は、実際のクラスのように、動作しているとして、次のテストコードによっても明らかだ。 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ definingextendingclasses.html function_are_classes:関数()(ヴァールcls1 = CreateClassInstance();(""、cls1)function_are_classes情報; cls1.value = 10;assertEquals(10、cls1.instantiated); cls1.method(); assertEquals(20、cls1.instantiated);ヴァールcls2 = CreateClassInstance(); assertEquals(""、typeof演算(cls2.value)未定義);)、 様々な面で、テストコードの実験では、インスタンス化された"オブジェクト"オブジェクトと同様に動作している実証する。太字のコードを示しています"オブジェクト"cls1とcls2実際には2つの別個のインスタンスです。以来、そう、"クラスを作成する"および"オブジェクトを簡単なようだ"と理由がある新しいキーワードですか?ため、どのようにクロスを考え出す参照メソッドを使用して関数のインスタンスは、"クラス"の後に複雑ですがインスタンス化さているように、次のソースコードで示すの答えです。 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ definingextendingclasses.html function_classes_generates_error:関数()(ヴァール分類= CreateClassInstance(); cls.method2 =関数()( = 40 inst.instantiated; )試し( cls.method2();testManager.failed();)(電子)(情報("functions_classes_generates_error"、"期待される例外をキャッチする("+➥e.toString()+ ")");)) 追加テストでは、"クラス"をインスタンス化され分類変数に割り当てられます。分類変数を参照するには、Method2のメソッドで拡張され、"オブジェクト"。 Method2のの実装では、"オブジェクト"のインスタンスでは、大変数を使って参照されます。これが"オブジェクト"のインスタンスに定義された大変数が選ばれた。ため、大定義されていないコードを実行すると、例外が生成されます。この例を動作させるには、関数Method2のによって参照される参照を分類する必要がありました。一言で言えば、関数内で"オブジェクト"のインスタンスを参照するに複雑なことよりもあるべきです。ソリューションは、新しいキーワードは、関数内からオブジェクトのインスタンスに関連付けられますこの識別子として。新しいキーワードを使用してCreateClassInstanceのコードを書き換え、我々はCreateRealClassInstance関数では、次のコードで示すように到着します。 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ definingextendingclasses.html関数CreateRealClassInstance()(ヴァール工大=関数()(= 10 this.instantiated; =関数this.method()(= 20 this.instantiated;)) 戻り新しい工大();) CreateClassInstanceとCreateRealClassInstanceは、唯一の実質的な違いを比較しながら大変数を関数として、大これで置き換えられるの呼び出しは、新しいキーワードが使用されます。関数の前には、新しいキーワードを使用するカスタムオブジェクトのインスタンスを、ここでは、オブジェクトのインスタンスは、関数内でこの識別子を使用して参照することができますには、関数に変換します。返されるオブジェクトのインスタンスとインスタンスを拡張することができますこのキーワードを使用して参照は、次のテストで示される。 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ definingextendingclasses.html function_instantiates_real_class:関数()(ヴァール分類= CreateRealClassInstance(); cls.method2 =関数()(this.instantiated = 40;)assertEquals(10、cls.instantiated);分類。Method2の(); assertEquals(40、cls.instantiated);) CreateRealClassInstance関数を呼び出すと、返されるオブジェクトのインスタンスを分類変数に代入されます。オブジェクトMethod2のメソッドを含めるには、展開されるとmethod2のオブジェクトインスタンスの実装では、この変数を使用して参照されます。この時Method2のと呼ばれ、存在しない例外をインスタンス化されたプロパティが40の値を持つ場合はJavaScriptを使用し慣れていると、すでにインスタンス化するオブジェクトの数が、その後、以前のインスタンス化構文の可能性が奇数ビットに見えます。 JavaScriptのオブジェクトをインスタンス化した古典的な方法は以下のとおり: 関数MyObjectを()()ヴァール分類=新しいMyObjectを(); このアプローチでは、関数型MyObjectには、オブジェクトのコンストラクタが関数の定義が含まれます。時MyObjectには、表記法は非常にJavaやC型のインスタンスに似ている#ため、インスタンス化され、プログラマは実際に何が起こる問題はないJavaScriptで型をインスタンス化します。どのようにJavaScriptのオブジェクトに定義される、より正確な説明をするとき工大変数のオブジェクトをインスタンス化するために使用されます。具体的には、オブジェクトのオブジェクトに関数を変換することによって、および関数は、新しいキーワードに関連付けられて構築されているコンストラクタです。際には、次の点に留意するJavaScriptクラスを操作する: •これは、新しいキーワードを使用せずにJavaScriptの型を作成することが可能です。しかし、原材料のJavaScriptを作成する"オブジェクト"を横断することのデメリットを参照する"オブジェクト"のインスタンスが機能しています。 •JavaScriptのオブジェクトの種類を動的に割り当てることができる、それは可能プロトタイプを実装するためにベースのプログラミングでは、ここでは、型の動作を実行時に決定されることです。 この資料で•以前のレシピについては、また、オブジェクトの種類からJavaScriptへの適用技術の関数オブジェクトを操作することを示した。 すべてのJavaScriptオブジェクトの基礎•型のオブジェクトです。 •ときは型をインスタンス化するために、新しいキーワードを使用して、プロトタイプのプロパティには、関数オブジェクトに関連付けられた特定の型のすべてのインスタンスに適用される振る舞いを定義するために使用することができます。 記事は、ソニアLandeを提出 免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。 重要: この記事は、"定義とクラスの拡張"の自動ソフトウェアによって翻訳された。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。
|
|||||
| Online: 256 users browsing the articles directory |
|
|