![](/img/trans.png)
[英]console.log outputs 'function <valueOf result> ' instead of '<valueOf result>'
[英]console.log and valueOf
在尝试解决一个小任务之后,我对console.log
函数的奇怪行为感到困惑。 我希望console.log
将使用valueOf
函数作为对象到原始值的转换器。 但是我错了...
最好用一个例子来解释。
Number.prototype.sum = function sum(val) {
var newVal = this + val;
var f = sum.bind(newVal);
f.valueOf = f.toString = function () {
return newVal;
};
return f;
};
var numb = 50;
var res = numb.sum(10)(2)(2);
console.log(res);
alert(res);
我期望在alert
和console.log
中都得到64
。 但这仅用于alert
如您在jsfiddle上看到的: http : //jsfiddle.net/3yhrnrnL/
在console.log
的情况下,我总是得到类似“ function b()”的信息,而不是64
。 有人可以解释一下为什么会发生以及如何解决吗? 谢谢!
javascript alert
需要一个字符串,如果未提供字符串,它将尝试将该值转换为字符串。
要使console.log正常工作,您可以像这样简单地使用parseInt()
函数
Number.prototype.sum = function sum(val) {
var newVal = this + val;
var f = sum.bind(newVal);
f.valueOf = f.toString = function () {
return newVal;
};
return f;
};
var numb = 50;
var res = numb.sum(10)(2)(2);
console.log(parseInt(res));
alert(res);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.