将参数传递给模块javascript

时间:2013-07-18 19:31:24

标签: javascript parameters module

我在javascript中使用模块模式。 它是一种创建“类”实例的方法吗? 我正在以正确的方式使用它?

var moduleClass = (function () {
var a =5;
return {
getA: function () {
  console.log(a);
 }
};
})();
var instance = moduleClass;
instance.getA();

http://jsfiddle.net/PzLKy/ 如何在新实例上传递参数?

3 个答案:

答案 0 :(得分:10)

你真的不需要新的东西,下面是正确的代码来实现你想要达到的目标。 另外,be really careful while using new, if used unwisely it can start clobbering your Global variable,如果你想使用new,John Resig对如何以正确的方式做一个非常好的解释,更多阅读John Resig的这篇文章 http://ejohn.org/blog/simple-class-instantiation/

http://jsfiddle.net/PzLKy/2/

var moduleClass = (function () {
    var a =5;

  return {
      setA: function (inA) {
      a=inA;
    } ,
    getA: function () {
      alert(a);
    }

  };

})();


var instance = moduleClass;
instance.setA(8);
instance.getA();

编辑: contactmatt是对的,绝对不要害怕使用构造函数,但这里有一些你需要注意的事情

取自John Resig在第一段中提到的文章,

假设这是您的代码

function User(first, last){
    this.name = first + " " + last;
}

var user = new User("John", "Resig"); 
user.name // John Resig
var user2 = User ("first","last");
user2.name //undefined, also this would pollute your current scope

如果你调用构造函数,你就不会得到任何指示,并且可能是调试的噩梦。

解决这个问题的方法是

function User(first, last){
  if ( this instanceof User ) {
    this.name = first + " " + last;
  } else
    return new User(first, last);
}

结束,

因此,如果您认为构造函数是解决问题的最佳方法,请使用它。但请注意,John的简单类实例化也是一个非常有用的模式,尝试通过它,他还解释了泛型构造函数。

答案 1 :(得分:0)

使用构造函数。不要害怕“新”,只要明智地使用它。

注意:标准命名约定是命名将用作具有大写字母的函数构造函数的函数。 (即ModuleClass而不是moduleClass)

function ModuleClass() {
  var a =5;
  return {
    getA: function () {
    console.log(a);
   }
  };
};

或者如果你足够勇敢地了解JavaScript中的'this'关键字。

function ModuleClass() {
  var a =5;
  this.getA = function () {
    console.log(a);
  };
};

var instance = new moduleClass();
instance.getA();

答案 2 :(得分:-1)

对于创建实例,您必须使用任何功能的关键字new。 此函数aka Constructor可以帮助您创建多个实例

var moduleClass = (function () {
var a =5;
return {
getA: function () {
  console.log(a);
 }
};
})();
var instance = new moduleClass;
instance.getA();

构造函数:构造函数与new关键字一起使用,它们是为对象提供原型的方法之一。

REFER - >

  1. Javascript Prototypes,objects,constructor??i am confused
  2. Constructors in JavaScript objects