这道javascript题该如何解?
题目
var foo = new Foo(2); // foo.val = 2;
var boo = new Foo(3); // boo.val = 3;
foo + boo // => 结果必须是 5
解决方案模板
var Foo = function(value) {
this.val = value;
}
8 回复
var foo = function(value) { this.val = value; this.toString = function() { return this.val; } }; try it……
http://www.jb51.net/article/46753.htm 找到一篇关于运算转换的。 那么用valueOf应该更好。
最好是覆盖valueOf
,而不是toString
。
var Foo = function(value) {
this.value = value;
this.valueOf = function() {
return this.value;
}
};
// 测试
var foo = new Foo(2);
var bar = new Foo(3);
console.log(foo + bar);
楼上的是正道,但我有个变态 var Foo = function(val){return val == 2 ? [] : [5]}
@wuliao49 为何是返回数组?返回 0 和 5 不是更直观吗
@think2011 3个妞!
@alsotang 用new的话,直接返回 0 和 5是拿不到的,数组可以。
改变constructor的返回值不是个好方法,虽然目的看起来达到了。。
var Foo = function(value) {
this.val = value;
return new Number(value);
}