Javascript对象或函数处理程序的新函数

时间:2013-09-24 16:07:24

标签: javascript

我有点困惑,因为以下哪一项是创建包含函数的处理程序的正确方法...具有函数或新函数本身的对象? 比方说,计算器函数的处理程序......

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;
    }
};

一方面有优势/劣势吗?

1 个答案:

答案 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);