函数处理程序的Javascript对象或新函数
我有点困惑,因为下面哪一个是创建包含函数的处理程序的正确方法…一个具有函数的对象还是一个新函数本身? 比如,计算器函数的处理程序函数处理程序的Javascript对象或新函数,javascript,Javascript,我有点困惑,因为下面哪一个是创建包含函数的处理程序的正确方法…一个具有函数的对象还是一个新函数本身? 比如,计算器函数的处理程序 CalculatorHandler = new function(){ this.add = new function(a, b){ return a + b; }; this.sub = new function(a, b){ return a-b; }; }; 或 一个函数比另一个函数有什么
CalculatorHandler = new function(){
this.add = new function(a, b){
return a + b;
};
this.sub = new function(a, b){
return a-b;
};
};
或
一个函数比另一个函数有什么优点/缺点吗?如果您只想有一个“篮子”来把函数放在一起,只需使用一个对象,就不需要构造函数:
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);
第二个是无效的语法…第一个模式@chumkiu起初我也这么认为,但现在我认为它是有效的(尽管它在这里不能正常工作)。
new
关键字只需要调用一个函数,这里就有了。结果值当然是一个普通对象,而不是一个函数。
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);