首页 > 解决方案 > Javascript中的模块模式与构造函数

问题描述

与这样的简单对象构造函数相比,使用模块模式的优缺点是什么?:

function Car() {
  var _mileage = 123;
  this.bar = function() {
      console.log(_mileage);
  }
}

两者都允许私有变量和方法,那么为什么以及何时需要或推荐模块模式?

提前致谢!

标签: javascript

解决方案


两者都创建了模块模式,而您展示的模式则使用范围来限制对变量和函数的访问,并在它们之上创建一个闭包。

模块模式主要用于创建一个对象:

var car = (function () {
    var _mileage = 123;

    function bar() {
      console.log(_mileage);
    }

    return {
        bar: bar
    };
}());

虽然您展示的那个允许创建多个对象,但它们是Car.

var car1 = new Car();
var car2 = new Car();

console.log(car1 instanceof Car); // true
console.log(car2 instanceof Car); // true


推荐阅读