6

最初にvarを使用

 function testCode(some) 
    {
         var something = some;
    }

これを使用する2番目

function testCode2(some) 
{
     this.something = some ;
}
4

2 に答える 2

3

最初の関数でsomethingは、プライベート(ローカル) 変数です。これは、関数の外では完全にアクセスできないことを意味します。一方、2番目はパブリックインスタンス変数です。変数が設定されるコンテキストは、関数の呼び出し方法によって異なります。

> testCode2("foo"); // this will refer to document.window
> something
"foo"

>> var obj = new testCode2("foo"); // this will refer to the new object
>> something
ReferenceError: something is not defined
>> obj.something
"foo"

参照:

于 2012-08-23T15:08:48.337 に答える
2

これらの関数が関数として使用される場合、 this キーワードは変数を静的にします。関数が 2 回呼び出された場合、関数の実行が終了すると、最初のサブジェクトが変数データを消去しますが、 this.something は引き続きその値を保持します。

それらをクラス コンストラクターとして使用している場合、var はプライベート変数を定義し、これはパブリック変数を宣言します。

このフィドルを参照してください:http://jsfiddle.net/UUFuX/1/

于 2012-08-23T15:19:54.237 に答える