有时我会这样创建类
function class1(){
.....
class1.prototype.callme = function(){
alert("hai");
}
}
then I instantiate using (new class1()).callme();
有时我使用模块化模式
var class2 = (function(){
var privatemethod = function(){
....
}
var publicmethod = function(){
alert("am public");
}
return{
callme:publicmethod
}
})();
then I call class2.callme()
有什么好处和坏处,请大神解释一下。
最佳答案
第一个是构造函数,第二个是对象,所以它们不一样。您可能想在不同情况下使用其中一种。在任何情况下,您通常都在构造函数外部声明原型(prototype),并将 this.property
用于公共(public)方法和变量。第二个选项不能作为类重用,除非你使用像 jQuery 的 extend
或 Underscore 的 _extend
之类的东西,这是我通常做的方式,没有原型(prototype)似乎更简单链式臃肿代码。
关于JavaScript编码差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789078/