编程语言
首页 > 编程语言> > 这种javascript模块模式的优点是什么?

这种javascript模块模式的优点是什么?

作者:互联网

因此,我已经写了一段时间的骨干应用程序了,我的模块的结构大致如下:

var AppName = AppName || {};

AppName.Module = {};

AppName.Module.View = Backbone.View.extend({...});
AppName.Module.Model = Backbone.Model.extend({...});

但是我最近偶然发现了这个模块模式:

var AppName = AppName || {};

AppName.Module = (function() {
    var View = Backbone.View.extend({...});
    var Model = Backbone.Model.extend({...});

    return {
        View: View,
        Model: Model
    }
})();

在第二种模式中,您可以定义“私有”方法,这些方法只能从Module范围访问,但是除此之外,在我看来,这通常很难测试.有人可以向我解释为什么某些JavaScript程序员偏向于将第二种方法作为本质上更好的模式吗?

解决方法:

这是因为您可以使用私有变量.例如,我们可以使用该模式定义bob并强制代码使用setName函数更改其名称(即,您不能通过直接访问它来更改值:

var bob = (function(){
  var name = "Bob";

  return {
    setName: function(newName){
      name = newName;
    },
    getName: function(){
      return name;
    }
  }
}());

console.log(bob.getName()); // "Bob"
console.log(bob.name); // undefined
bob.setName("Bobby");
console.log(bob.getName()); // "Bobby"

通过立即执行函数定义,您将获得一个新的作用域,可用于使用闭包“隐藏”行程变量.

标签:backbone-js,javascript,design-patterns
来源: https://codeday.me/bug/20191121/2055051.html