我在 javascript 中使用模块模式。它是一种创建“类”实例的方法吗?我以正确的方式使用它?
var moduleClass = (function () {
var a =5;
return {
getA: function () {
console.log(a);
}
};
})();
var instance = moduleClass;
instance.getA();
http://jsfiddle.net/PzLKy/ 如何在新实例上传递参数?
我在 javascript 中使用模块模式。它是一种创建“类”实例的方法吗?我以正确的方式使用它?
var moduleClass = (function () {
var a =5;
return {
getA: function () {
console.log(a);
}
};
})();
var instance = moduleClass;
instance.getA();
http://jsfiddle.net/PzLKy/ 如何在新实例上传递参数?
您在这里并不需要 new,下面是实现您想要实现的目标的正确编码方式。此外,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/
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 的简单类实例化也是一个非常有用的模式,尝试通过它,他还解释了泛型构造函数。
使用构造函数。不要害怕“新”,只要明智地使用它。
注意:标准命名约定是用大写字母命名将用作函数构造函数的函数。(即 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();
要创建实例,您必须将关键字new
与任何功能一起使用。这个函数又名构造函数可以帮助你创建多个实例
var moduleClass = (function () {
var a =5;
return {
getA: function () {
console.log(a);
}
};
})();
var instance = new moduleClass;
instance.getA();
构造函数:构造函数与 new 关键字一起使用,它们是为对象提供原型的方式之一。
参考-->