我可以分配对象运算符吗? “例如+, - ”

时间:2010-01-24 17:09:28

标签: javascript jquery oop

所以我有一个简单的 Javascript 对象:

function Vector(x, y){
     this.x = x;
     this.y = y;

     this.magnitude = function(){};
     this.add = function(vector){};
     this.minus = function(vector){};
     this.normalise = function(){};
     this.dot = function(vector){}  

     //...
}

我想执行以下操作:

var a = new Vector(1,1);
var b = new Vector(10,5);
var c = a + b
a += c;
// ... and so on

我知道可以为其他语言的对象实现运算符,如果我可以在Javascript中执行它会很棒


非常感谢帮助。谢谢! :)

2 个答案:

答案 0 :(得分:3)

这在JavaScript中是不可能的。

您可以在数字上下文中指定对象发生的情况:

Vector.prototype.valueOf = function() { return 123; };

(new Vector(1,1)) + 1; // 124

......但我认为这不是你想要的。

提供plus方法怎么样? -

Vector.prototype.plus = function(v) {
    return /* New vector, adding this + v */;
};

var a = new Vector(1,1);
var b = new Vector(10,5);
var c = a.plus(b);

答案 1 :(得分:0)

抱歉,ECMAScript / Javascript不支持运营商重载。它被提议用于ECMAScript 4,但该提议未被接受。您仍然可以定义一个与+完全相同的方法 - 只需调用.add()