2016-12-31 162 views
0

我正在構建一個加載屏幕的庫,允許我從各種不同的文檔調用Loader.Show(),Loader.Hide()或Loader.Step()。Javascript對象聲明

我已經建立了庫,但是我並沒有完全理解聲明對象的各種方法。以下兩種模式有什麼區別,哪個更好?

//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中,金屬是一個私有變量。我不知道如何在示例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(); 

runState不是NonRobot私人財產,它可以被外部勢力操縱。