所以我有一个简单的 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中执行它会很棒
非常感谢帮助。谢谢! :)
答案 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()
。