我有时喜欢这个JavaScript编码差异
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'上创建属性/方法_inside_构造函数?在你的第一个例子中,每当你创建一个新的'class1'实例时,'class1.prototype.callme'被覆盖,这是一种低效率的方式。如果你真的使用'(new class1())。callme()'(即,这不是对这个问题的简化),那么整个类的事情就是多余的。 – nnnnnn 2012-08-03 04:20:50
只是一个例子,但我只想要优势和劣势 – 2012-08-03 04:25:48
第一种模式并不是一个好计划 - 它是一种反模式。实例化一个对象只是从其原型中调用一个方法,这对你没有多大帮助,第二种方式总是会更好。如果实际上你实际上对'class1'的单个实例做了某些事情,那么它为第二个例子提供了一个不同的目的,但是当你没有给出更现实的例子时,比较它们是很难的。 – nnnnnn 2012-08-03 04:30:14