2016-12-31 4 views
0

さまざまなドキュメントからLoader.Show()、Loader.Hide()またはLoader.Step()を呼び出すことができる読み込み画面のライブラリを構築しています。Javascriptオブジェクト宣言

私はライブラリを構築しましたが、オブジェクトを宣言するさまざまな方法を十分に理解していません。次の2つのモデルの違いは何ですか?どちらが良いですか?

//Example 1 
 
var Robot = (function() { 
 
\t var metal = "Steel"; 
 
    
 
    return { 
 
    killAllHumans: function() { 
 
     alert(metal); 
 
    } 
 
    } 
 
})(); 
 
Robot.killAllHumans(); 
 

 
//Example 2 
 
var NonRobot = { 
 
    runState: "Normal", 
 
    run: function() { 
 
    \t alert(this.runState); 
 
    } 
 
} 
 
NonRobot.run();

は、私は両方の例1 &は、オブジェクトを作成することを理解しています。また、例1では、metalはプライベート変数であることを理解しています。私は例2でプライベート変数を作成する方法を知らない。唯一の違いはスコープですか?

+0

コンストラクタ関数を使用しないと、プライベートスコープ変数を作成できません。 –

答えて

2

この方法は、あなたがあなた自身の変数を追加し、いくつかの中間evalationsを行う、あるいは、そのような一方metal

var Robot = (function() { 
    var metal = "Steel"; 

    return { 
    killAllHumans: function() { 
     alert(metal); 
    } 
    } 
})(); 

としてプライベート変数を、作成することができますプライベートコンテキストを作成し、このバージョンが作成されますオブジェクトリテラルです:

var NonRobot = { 
    runState: "Normal", 
    run: function() { 
    alert(this.runState); 
    } 
} 
NonRobot.run(); 

runStateNonRobotの私有財産ではなく、それが外部の力によって操作することができます。

関連する問題