JavaScripot機能

オブジェクトと同様に機能の治療

  

問題はあなたが実際には、関数オブジェクトが利用したい(覚えて すべて JavaScriptのオブジェクトです)。理論多くの人々には、関数のいくつかのキーワードをJavaScriptで使用されると思います。機能も操作できるオブジェクトです。これは、コードを別の他のオブジェクトのような関数を扱うことができる関数は、オブジェクトが知ることは非常にJavaScriptコードを書くの観点から興味深いことができます。これは、変数に機能を割り当てることを意味は、クラスのプロパティは、何を。ソリューションは、この機能を使用して1つの方法をお持ちの関数オブジェクトを返すようにFactoryパターンを実装することです。例えば、Ajaxを利用した場合は、XMLHttpRequestオブジェクトをインスタンス化する2つの方法、およびメソッドを使用しているブラウザによって異なります。

Factoryパターンの実装からインターフェイスを区切るために使用されます。通常、そのインターフェイスを実装することを意味ため、JavaScriptは動的言語ですが、インターフェイスのない現実的な概念です。ので、直接特定の型を必要とせずに、メソッドを呼び出すことができる動的な言語では必要に応じてインターフェイスではありません。XMLHttpRequestオブジェクトのインスタンス化の場合には、Factoryパターンは、XMLHttpRequestを適切な方法を使用してインスタンスを作成するために使用することができる関数の参照を返しますには、JavaScriptでは、関数は、変数に代入することができるオブジェクトです。をインスタンス化XMLHttpRequestの機能の割り当てを使用するようにされている工場を実装する方法です。完全な実装を次のとおりです。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ functionsareobjects.html関数InstantiateIEXMLHttpRequest()(("Microsoft.XMLHTTP")を;)関数InstantiateOthersXMLHttpRequest()(新しいXMLHttpRequestを返す新しいActiveXObjectを返す();)関数FactoryXMLHttpRequest()(場合(window. XMLHttpRequestを)(戻りInstantiateOthersXMLHttpRequest;)以外の場合(window.ActiveXObject)(戻りInstantiateIEXMLHttpRequest;)スロー新しいError("")XMLHttpRequestのインスタンスを作成できませんでした;)

前述の例では、FactoryXMLHttpRequest関数は、Factoryパターンの実装です。実装された関数の中で2つのif文は、ブラウザは、現在は実行されていることを確認されます。ブラウザによっては、returnステートメントのいずれかのInstantiateIEXMLHttpRequest関数またはInstantiateOthersXMLHttpRequest関数への参照が返されます。両方のケースでは、返される参照は、XMLHttpRequestオブジェクトのインスタンスを作成する機能です。そのFactoryXMLHttpRequestメソッドを使用するコードは次のとおり。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ functionsareobjects.html factory_function:関数()(ヴァールInstantiateXMLHttpRequest = FactoryXMLHttpRequest();ヴァールXMLHTTPを= InstantiateXMLHttpRequest();(XMLHTTPを)assertNotNull;)

通知の例ではどのようにInstantiateXMLHttpRequest変数を関数として扱うことができます。例示目的のためには、InstantiateXMLHttpRequest変数は、変数と呼ばれることを示すことは、関数を呼び出すように、大文字と小文字が混在しています。識別子とは、変数を関数として使用されているコンテキストに基づいて、その変数は、関数ではありませんかわからない。

これは、関数は別のオブジェクトを返します。FactoryXMLHttpRequest伝統的なアプローチを使用してコーディングされて:コードを示していますこれは非常に重要なポイントは、機能するときに関数のインスタンスを返すと呼ばれる宣言します。後に、コード解析されており、初期化コードの動作を決定されます。これは、関数は、コードを最適化するために解析されている初期化することができますJavaScriptでは、これは必要ではありません。たとえば、次のようにFactoryXMLHttpRequestコードを書き換えることが次のとおり。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ functionsareobjects.html 

変更の実装では、このコードはInstantiateXMLHttpRequest変数を割り当てるには、HTMLページとして実行され使用されるロードされます。したがって、いつInstantiateXMLHttpRequest変数の関数としてXMLHttpRequestのインスタンス化は、適切な方法で参照されて実行されます。必要がない工場を呼び出して、意思決定、それぞれ、すべての時間は、関数が呼び出されます。この機能は、関数の処理を行うオブジェクトとしては、コードの動作を実行時に決定することができますに興味深いコーディングのファセットに追加されます。ここでは、通常は、適切な動作を使用できますが、動的に割り当てられた変数を決定する意思決定構造を使用します。ための関数オブジェクトですが、いくつかの追加のコーディングが可能です。たとえば、動的にプロパティと関数のためのメソッドを割り当てるには、次の例に示すように可能です。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ functionsareobjects.html関数FunctionFunctionProperties(cmpval)(assertEquals(cmpval、FunctionFunctionProperties.value);)ヴァールVariableFunctionProperties =関数()(assertEquals(cmpval、VariableFunctionProperties.value)cmpval;)ヴァールstartIndexが= VariableFunctionProperties ()。スライス(startIndexに+ = VariableFunctionProperties.toString("}");ヴァールバッファ()のlastIndexOf = VariableFunctionProperties.toString("{");ヴァールがendIndex()。indexOfをtoString戻り値1がendIndex);ヴァールInstantiatedFunctionProperties =新しい関数(""、バッファ)cmpval;

この例ではそれぞれの宣言は、関数のインスタンスを宣言する別の方法で示す3つの関数の宣言を示しています。最初の宣言は、FunctionFunctionProperties、伝統的なアプローチです。 2番目の宣言は、VariableFunctionProperties、変数や無名関数を使用します。 3番目の宣言は、InstantiatedFunctionPropertiesここでは、コンストラクタのパラメータは、パラメータの宣言を表すのFunctionオブジェクトの明示的なインスタンスであり、最後のパラメータは関数の本体です。

関数本体のJavaScriptコードが実行可能なJavaScriptに変換されているバッファです。3つの関数の実装については、関数の名前を参照され、プロパティの値への参照を追加されます。それぞれの場合や、その場合、欲望や、別の関数を参照するプロパティを割り当てることができるすべての関数のインスタンス。あなたは、その関数に関連付けされている静的変数を宣言する方法として、プロパティを考えることができます。3つの関数の宣言のため、彼らと同じやり方では、次の例に示すように呼び出すことができますオブジェクト変数を表します。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ functionsareobjects.html function_with_properties:関数()(VariableFunctionProperties.value = 10; VariableFunctionProperties(10); FunctionFunctionProperties.value = 10; FunctionFunctionProperties(10); InstantiatedFunctionProperties.value = 10; InstantiatedFunctionProperties(10) ; testManager.success();)

は、宣言された関数を呼び出すと、コードの読み取りに慣れるには少し時間がかかる。各関数の呼び出しの前には、識別子かのようにオブジェクトが使用されます。オブジェクトが、オブジェクトは、関数と呼ばれ参照されます。これらの例は明らかに機能機能することができます二重の性質ここで、関数オブジェクトやオブジェクトがあることを示します。この二重性問題を提起:どのように実装された関数は、関数のインスタンスを知っている?次のコードは、この問題を示しています。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ functionsareobjects.html function_with_properties:関数()(VariableFunctionProperties.value = 10; VariableFunctionProperties(10); FunctionFunctionProperties.value = 10; FunctionFunctionProperties(10); InstantiatedFunctionProperties.value = 10; InstantiatedFunctionProperties(10) ; testManager.success();)

は、宣言された関数を呼び出すと、コードの読み取りに慣れるには少し時間がかかる。各関数の呼び出しの前には、識別子かのようにオブジェクトが使用されます。オブジェクトが、オブジェクトは、関数と呼ばれ参照されます。これらの例は明らかに機能機能することができます二重の性質ここで、関数オブジェクトやオブジェクトがあることを示します。この二重性問題を提起:どのように実装された関数は、関数のインスタンスを知っている?次のコードは、この問題を示しています。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ functionsareobjects.html関数GetFunction()(return関数(cmpvalue)(assertEquals(cmpval unknownfunctioninstance。値);))

この例では、GetFunction関数を実装して返す独自の関数インスタンスごとに、すべての時間GetFunctionと呼ばれます。を参照する場合は、関数のインスタンスのプロパティをしたかったので、匿名の関数は識別子が関連付けられている場合、ハードディスクこれを行うに迫られるだろう。前の例では、関数インスタンスへの参照を参照するためのプロパティと関数オブジェクトのメソッドが使用されました。参照するためには、匿名関数のプロパティをできるようにする関数を宣言するのは、この方法を使用して、存在しない、関連付けられたインスタンス識別子、および方法はありません。このソリューションは、次の例としては、参照されて内部変数を使用することを示します。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ functionsareobjects.html関数GetFunctionFixed()(ヴァール工大=関数()(assertEquals(inst.value)cmpval cmpval;)を返す工大;)

どのようにコードでは、未知のインスタンスが実際にも、作品最初は少し不思議に思えるかもしれませんが問題を修正。これは、プログラミング技法、一般的に呼ばれるのを使用するもの 閉鎖。どのように閉鎖動作を理解するには、関数のオブジェクトとして、いくつかの関数のキーワードを構築しないと思うが覚えている。ここで一言で言えば実際の動作:

1。 元GetFunctionFixedを呼び出します。

2。 GetFunctionFixedの実装は、実行されます。

3。 匿名関数は、Functionオブジェクトのインスタンスが宣言されます。

4。 インスタンス化された無名関数には、ローカル変数の大宣言が割り当てられます。

5。 匿名関数の参照工大は、JavaScriptのプロセッサは、この理解への参照をローカル変数の宣言を作成します。

6。 工大変数を呼び出し元に返されます。

7。 ガベージコレクタをしようとする時にゴミが、大収集なぜなら匿名関数を参照する限り、匿名工大どこかで参照されていないことができます。ときに一緒に実際には、すべてのオブジェクトは、このプロセスの手順を考えると、簡単になりますどのようにしてください。このコードは動作します。もしそれが参照する何もしないときに、オブジェクト参照が別のオブジェクトは、オブジェクトだけがごみを収集することができますときの機能を使用してオブジェクトとして扱うには、次の点に留意しておく:

•関数はオブジェクトであり、任意の他のJavaScriptオブジェクトのように操作することができます。しかし、関数オブジェクトや、不適切または関数のプロパティを不適切な可能性があります機能を使用している メモリリークメモリを使用することではなく、どこのメモリではなく、ゴミ収集、参照しているにもかかわらず、スクリプトです。

関数またはメソッドの構成•ときには、HTMLページがロードされていることが可能です。のようにコードコードが何を実行すべきかを決定する必要はありませんこのロジックは、処理、保存されます。

中には、コードを書いている•この考え方は、コードの動作は、実行時に決定されるに慣れるため、時間と実験のビットはかかります。

•存在のオブジェクト、関数を参照できるプロパティやメソッドを、実行時の動作を定義するための関数が可能です。は、プロパティもコピーされると仮定しない場合、関数は1つのインスタンスから別のにコピーされ、プロパティ、または関数へのメソッドを割り当てる場合は、そのように理解するには、プロパティとメソッドは一時的なもので、ありません。

記事は、ソニアLandeを提出


免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。
重要: この記事は、"JavaScripot関数"自動ソフトウェアによって翻訳された。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。


Online: 266 users browsing the articles directory