ホームページ > ウェブフロントエンド > jsチュートリアル > JS_javascript スキルのコンストラクターの詳細な分析

JS_javascript スキルのコンストラクターの詳細な分析

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

JavaScript では、システム組み込み関数とユーザー定義関数の両方を含む、任意の正当な関数をオブジェクトのコンストラクターとして使用できます。関数がコンストラクターとして実行されると、その内部の this 属性は関数自体を参照します。

一般に、コンストラクターには戻り値がなく、this ポインターによって渡されたオブジェクトを初期化するだけで、何も返しません。関数が値を返す場合、返されたオブジェクトは新しい式の値になります。形式的な観点から見ると、関数がコンストラクターとして実行されるか、通常の関数として実行されるかの唯一の違いは、new 演算子が使用されるかどうかです。

上記の説明は実際にはより正確な意味を持ち、関数が値を返す状況を 2 つの状況に分けます。関数の戻り値は参照型と値型です。

関数の戻り値が参照型 (配列、オブジェクト、または関数) のデータである場合、new 演算子をコンストラクターとして使用してこの関数が構築されると、演算の結果は次のように置き換えられます。このとき、コンストラクター本体の this 値は失われ、返されたオブジェクトに置き換えられます。例:

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

function test()
{
this.a=10;
return function()
{
return 1;
}
}
alert m=new test();
var n=test ();
alert(m);// return の後にクロージャを返す
alert(n);// return の後にクロージャを返す

の値の合計演算結果 m n の値は同じで、テスト関数が返すクロージャであり、this が参照するオブジェクトと this.a=10 の代入結果はすべて破棄されます。

関数の戻り値が値型の場合、new 演算子をコンストラクターとして使用して関数が構築されると、その戻り値は破棄されます。新しい式の結果は、依然として this によって参照されるオブジェクトです。
コードをコピー コードは次のとおりです。

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