ホームページ > ウェブフロントエンド > jsチュートリアル > 関数を定義するnew functionName()の理解_基礎知識

関数を定義するnew functionName()の理解_基礎知識

WBOY
リリース: 2016-05-16 16:47:17
オリジナル
1421 人が閲覧しました

たとえば、関数の 2 つの呼び出しメソッドを定義します。

コードをコピー コードは次のとおりです。

関数 getInfo () {
var info = {
メッセージ: "メッセージ"
};
情報を返す;

1, var info1 = getInfo() ;

2. var info2 = new getInfo();

1 と 2 に違いはありますか? info1とinfo2で得られる値は同じですか?

最初の状況は非常に単純で広く使用されており、関数を実行し、その戻り値を info1 オブジェクトに割り当てます。

2 番目の状況は一般にまれです。 。まず、関数もオブジェクトであり、確実にインスタンス化できます (インスタンス化とは、実際にはオブジェクトのコンストラクターを呼び出してオブジェクトを初期化することです)。2 番目のケースは、getInfo 関数オブジェクトのコンストラクターを呼び出して、コンストラクターの初期化を受け取ることです (通常は this)、この関数の特別な機能は、コンストラクターに表示された戻り値がある場合、その戻り値を使用して this オブジェクトを置き換えることです。したがって、2 番目のケースでは、 new getInfo はコンストラクターを呼び出し (関数のコンストラクターは関数の定義そのものです)、戻り値の情報を受け取ります。

アプリケーション:

1. たとえば、HTML は DOM オブジェクト:
を定義します。JS コードは次のとおりです:

コードをコピーします コードは次のとおりです:
function $(domId) {
var dom = document.getElementById(domId);
戻り dom;

window.onload = function() {
var dom1 = new $("domId"); dom2 = $("domId") ;
alert(dom1 == dom2);


アラート メッセージは true と表示されます。関数名に $ を使っているのは、この関数を使うとちょっと jQuery 風になるからでしょうか?実際、このスタイルの関数定義は jQuery のコンストラクターで使用されており、new を使用しても、関数を直接呼び出しても、戻り値は同じです。

2. 互換性のある XMLHttpRequest オブジェクトを定義します (この例は Javascript Authoritative Guide のセクション 18.1 から引用しています)
ブラウザーが異なれば、ActiveX 方式で使用される初期の IE が異なる方法で非同期通信をサポートする可能性があることは誰もが知っています。 、次のコードは互換性のある XMLHttpRequest オブジェクトを定義します:




コードをコピー
コードは次のとおりです: if (window.XMLHttpRequest === 未定義) { window.XMLHttpRequest = function() {
try {
//利用可能な場合は、最新バージョンの ActiveX オブジェクトを使用します
return new ActiveXObject ("Msxml2.XMLHTTP.6.0");
} catch (ex1) {
try {
return new ActiveXObject("Msxml2.XMLHTTP.3.0") {
throw new Error("XMLHttpRequest is not support")
}
}
}
}


このようにして、var xhr = new を直接渡すことができますXMLHttpRequest()はIEでもFirefoxでも定義されています。
関連ラベル:
new
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート