我有点困惑,因为以下哪一项是创建包含函数的处理程序的正确方法...具有函数或新函数本身的对象? 比方说,计算器函数的处理程序......
CalculatorHandler = new function(){
this.add = new function(a, b){
return a + b;
};
this.sub = new function(a, b){
return a-b;
};
};
或者
CalculatorHandler = {
this.add: function(a, b){
return a + b;
},
this.sub: function(a, b){
return a-b;
}
};
一方面有优势/劣势吗?
答案 0 :(得分:2)
如果你只想拥有一个“篮子”来保持你的功能,只需使用一个对象,就不需要构造函数:
CalculatorHandler = {
add: function(a, b){
return a + b;
},
sub: function(a, b){
return a-b;
}
};
请注意示例中的this
是如何不正确的,因为它将引用您在(可能是全局 - 窗口)中定义CalculatorHandler对象的范围。
另一方面,如果你想构建一个计算器来获取一些数据并对其进行操作,那么你可以在第一个例子中使用类似OOP的方法。
CalculatorHandler = function() {
this.total=0;
this.add = function(a) {
this.total += a;
};
this.sub = function(a) {
this.total -= a;
};
}
var calc = new CalculatorHandler();
calc.add(4);
calc.sub(3);
更好的解决方案,基于prototipal继承:
CalculatorHandler = function() {
this.total=0;
}
CalculatorHandler.prototype.add = function(num) {
this.total += num;
}
CalculatorHandler.prototype.sub = function(num) {
this.total -= num;
};
var calc = new CalculatorHandler();
calc.add(4);
calc.sub(3);