这两种JavaScript样式有什么区别?

时间:2013-01-30 15:20:39

标签: javascript coding-style

我在JavaScript中看到了几种样式。在可读性,优化和变量范围方面对它们之间的差异感到好奇。赞成赞成和赞成。

方法A:

function MyObj(options) {
  this.options = options;
}
MyObj.prototype.getOptions = function() {
  return this.options;
};

方法B:

var MyObj = (function() {
  function MyObj(options) {
    this.options = options;
  }
  MyObj.prototype.getOptions = function() {
    return this.options;
  };
  return MyObj;
})();

有人曾经说过包装器是为了处理IE中的命名函数。我注意到,通过放置一个包装器,可以将 static 的变量和函数划分为对象。

然而,我也有很多人抱怨包装效率低或奇怪。 CoffeeScript也编译为方法B.因此,当手工编写JS时,这是最佳实践,何时应该使用另一种方法?

1 个答案:

答案 0 :(得分:1)

第二种是使用模块模式。在这个简化的例子中,没有真正的区别,但第二个通常应该是变量封装的首选,另外它避免了不必要地污染全局命名空间。