繁体   English   中英

console.log和valueOf

[英]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);

我期望在alertconsole.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM