Js中的对象转换为数值类型时是不是返回结果都是NaN?

打错了函数,sorry...
1、看到Js高程第三章Number()函数转换对象为数值时没看懂。2、然后我尝试了一下用Number()函数转换对象为数值时,结果都是NaN。3、所以如果有可以转换为数值类型的对象请举例,万分感谢解惑。
Smart猫小萌
浏览 1441回答 2
2回答

至尊宝的传说

你需要了解调用Number的时候,到底是怎么执行的?根据js规范,如果参数是对象,会首先把对象转化为原始类型的数据,那么怎么转化为原始类型的数据呢?比如leta={}那么会首先调用a的valueOf方法,如果结果不是原始类型,那么调用toString方法:a.valueOf()返回对象本身,不是原始类型,所以需要继续调用toString方法;a.toString()返回"[objectObject]",是一个字符串,是原始类型,所以接下来会调用Number("[objectObject]"),返回NaN;所以你如果想返回数字,那个我们就可以通过修改转化步骤中的返回值来改变结果,比如,可以修改valueOf的返回值:leta={}a.valueOf=function(){return2}Number(a)//2或者修改toString的返回值:letb={}b.toString=function(){return3}Number(b)//3参考链接规范
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript