JavaScriptの中のfunction(){}とnew function()
3996 ワード
午後は暇を取ってネットで文章を見ましたが、ある原因でjsの問題を研究しました.まず以下の言葉を考えてみます. new表現の後のconstructorが参照対象(行列、オブジェクト、関数など)に戻ると、newで作成された匿名のオブジェクトを上書きします.元のタイプ(returnなしでは元のタイプundefined)に戻ると、newで作成された匿名のオブジェクトに戻ります. function(){}とnew function()の違いを研究している時にインターネットで調べた話です.この部分を理解すればこのコードを参照してください.
javascriptコード
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
new function(){}は匿名のオブジェクトに戻りました.コードはこのオブジェクトのコンストラクタ呼び出し時に実行されたコードと見なして実行されましたので、前の二つのコード(fun 1とfun 2)が実行された後、二つのフュージョンのコードが実行されます. new function(){}戻り値の違いは二つの違いがあると思います.つまり本文の冒頭の二重引用符に太字を入れるという内容です. function(){}は匿名関数に戻りました.第三文のコードの中でfun 3という変数を使って受信しましたが、実はこの匿名関数に名前を付けてfun 3と言います.だからfun 1、fun 2とは違って、fun 3という方法で呼び出された時にのみコードが実行されます. 本論文の例は比較的簡単で、例のクリックダウンロード(IEで開けたり、一歩ずつ調整したりして、ページの内容の変化をよく観察すると、いくつかのjsの特徴を発見できる.
javascriptコード
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// fun1
// :fun1 = new String("2011-02-18 17:23:43");
var
fun1 =
new
function
() {
operList.innerHTML +=
"<li>fun1</li>"
;
return
new
String(
"2011-02-18 17:23:43"
);
};
/* “fun1” */
// fun2
// :function (){ return "2011-02-18 17:23:43"; }
// var fun2 = new ();
var
fun2 =
new
function
() {
operList.innerHTML +=
"<li>fun2</li>"
;
return
"2011-02-18 17:23:43"
;
};
/* “fun2” */
// fun3
var
fun3 =
function
() {
operList.innerHTML +=
"<li>fun3</li>"
;
return
"2011-02-18 17:23:43"
;
};
alert(
"fun1 : "
+ fun1);
// fun1
alert(
"fun2 : "
+ fun2);
// fun2
alert(
"fun3 : "
+ fun3);
// fun3
alert(
"fun3() : "
+ fun3());
// fun3
/* “fun3” */
以上のコードの中のoperListはページの上の1つのulで、このコードは走ってきてidが“operList”のulの中で3つのliを挿入して、それぞれ“fun 1”を表示して、“fun 2”、“fun 3”;同時に4つのalertをページに打ち出し、それぞれ「fun 1:2011-02-18 17:23:43」、「fun 2:[object Object]」、「fun 3:…」と表示します. コードコメントに全部書いてありますが、この例はfunction()とnew function()の違いと上記の話の意味をよく説明できると思います. まとめてみます.new function(){}は匿名のオブジェクトに戻りました.コードはこのオブジェクトのコンストラクタ呼び出し時に実行されたコードと見なして実行されましたので、前の二つのコード(fun 1とfun 2)が実行された後、二つのフュージョンのコードが実行されます. new function(){}戻り値の違いは二つの違いがあると思います.つまり本文の冒頭の二重引用符に太字を入れるという内容です. function(){}は匿名関数に戻りました.第三文のコードの中でfun 3という変数を使って受信しましたが、実はこの匿名関数に名前を付けてfun 3と言います.だからfun 1、fun 2とは違って、fun 3という方法で呼び出された時にのみコードが実行されます. 本論文の例は比較的簡単で、例のクリックダウンロード(IEで開けたり、一歩ずつ調整したりして、ページの内容の変化をよく観察すると、いくつかのjsの特徴を発見できる.