ホームページ > ウェブフロントエンド > jsチュートリアル > new function(){} と function(){}()_js オブジェクト指向の違いの詳細な説明

new function(){} と function(){}()_js オブジェクト指向の違いの詳細な説明

WBOY
リリース: 2016-05-16 19:05:37
オリジナル
1256 人が閲覧しました

シナリオ 1:
var yx01 = new function() {return "center of Circle"};
alert(yx01);
シナリオ 1 のコードを実行すると、「[オブジェクト object]」が返されます。このときのコードは次と同等です:

function anonymous class(){
return "center of Circle"
}
var yx01 = new anonymous class( );
alert(yx01); us シナリオ 1 のコードに次の変更を加えます。 🎜>alert(yx01);
実行すると、返されるのは「円の中心」です。これはなぜでしょうか。

new 式の後のコンストラクターが参照オブジェクト (配列、オブジェクト、関数など) を返す限り、プリミティブ型を返す場合 (リターンなし)、new によって作成された匿名オブジェクトを上書きします。実際には、元の型が未定義に返され、 new
によって作成された匿名オブジェクトが返されます。これは、new String が文字列リテラルではなくオブジェクトを構築するためであり、new String(x) がパラメータを取る場合は、アラートが表示されます。そうなった場合は x を返します。したがって、yx01 は新しい String("center of thecircle") オブジェクトを返し、アラート yx01 は「円の中心」を表示します。

シナリオ 2:

var yx02 = function() {return "円の中心"}();
alert(yx02);このときのコードは次と同等です:

var anonymous function = function() {return "center ofcircle"};
yx02 = anonymous function();
alert(yx02); 明らかに、yx02 は匿名関数の実行結果の値を返します。つまり、yx02 は「円の中心」です。

もちろん、匿名関数の実行結果は匿名オブジェクトになることもあります。具体的な一般的なアプリケーションについては、「JavaScript のモジュール パターン


を参照してください。

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