对数字等自定义对象求和(Javascript)

对数字等自定义对象求和(Javascript),javascript,object,operator-overloading,Javascript,Object,Operator Overloading,我是Javascript新手。我正试着做这个练习,但我找不到任何帮助 我创建了这个对象 var Foo = function(value) { this.val = value; } 现在我需要sum两个Foo对象和+操作符 var first = new Foo(2); var second = new Foo(3); var result = first + second; //should be 5 我有一个方法过载操作符+< /C> >(如 C++ >代码>,声明我的 FO对

我是Javascript新手。我正试着做这个练习,但我找不到任何帮助

我创建了这个对象

var Foo = function(value) {
    this.val = value;
}
现在我需要
sum
两个
Foo对象
+操作符

var first = new Foo(2);
var second = new Foo(3);
var result = first + second; //should be 5

<>我有一个方法过载<代码>操作符+< /C> >(如<代码> C++ >代码>,声明我的<代码> FO对象<代码>作为<代码>整数< /代码>或类似的东西。

< P> >在C++中,没有任何方法可以像C++那样重载操作符。你能做的最接近的事情就是为你的对象做一个求和函数,比如

function sum ( a, b ) { return a.value + b.value; }

在JavaScript中没有办法像C++那样重载运算符。你能做的最接近的事情就是为你的对象做一个求和函数,比如

function sum ( a, b ) { return a.value + b.value; }
jsfiddle:

UPD

好的,没有val:

var Foo = function(value) {
    this.val = value;

    this.toString = function() {
        return this.val;
    }
}

var first = new Foo(2);
var second = new Foo(3);
var result = first + second;
alert(result); // 5

jsfiddle:

UPD

好的,没有val:

var Foo = function(value) {
    this.val = value;

    this.toString = function() {
        return this.val;
    }
}

var first = new Foo(2);
var second = new Foo(3);
var result = first + second;
alert(result); // 5

正如前面提到的,您不能在javascript中重写运算符,但可以实现一个值,它是toString()的算术版本。 添加以下代码行:

Foo.prototype.valueOf = function () { return this.val; };


Working fiddle

正如前面提到的,您不能重写javascript中的运算符,但可以实现一个值,它是toString()的算术版本。 添加以下代码行:

Foo.prototype.valueOf = function () { return this.val; };


工作小提琴

我需要使用+运算符求和。也许有办法将我的Foo对象声明为整数?我需要使用+运算符求和。也许有一种方法可以将我的Foo对象声明为整数?我不能在练习中使用.val:(这是学校的练习。我需要找到一种方法,用+运算符求和。有一种方法可以在构造函数中返回.val?@Vlad非常感谢。现在我看到我也可以这样做:var Foo=function(value){return new Number(value);}我不能在练习中使用.val:(这是学校的练习。我需要找到一种方法,只需使用+运算符就可以对数字求和。有一种方法可以在构造函数中返回.val?@Vlad非常感谢。现在我看到我也可以这样做:var Foo=function(value){return new Number(value)}谢谢你给我展示另一个解决方案,这也很有效!当你尝试学习新东西时,人们真的帮助你,这是令人欣慰的:D谢谢你给我展示另一个解决方案,这也很有效!当你尝试学习新东西时,人们真的帮助你,这是令人欣慰的:D