Javascript对象声明

时间:2016-12-31 02:34:47

标签: javascript object

我正在构建一个加载屏幕的库,它允许我从各种不同的文档中调用Loader.Show(),Loader.Hide()或Loader.Step()。

我已经构建了库,但是我并不完全了解声明对象的各种方法。在以下两个模型中有什么不同,哪个更好?



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

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




我理解示例1&创建对象。我也明白,在例1中,metal是一个私有变量。我不知道如何在示例2中创建私有变量。唯一的区别是范围?

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的私有财产,可以由外部力量操纵。

答案 1 :(得分:0)

在第一个实例中,您使用enter image description here作为构造函数。

在第二个中,您使用Immediately Invoked Function Expression创建对象。