打错了函数,sorry...1、看到Js高程第三章Number()函数转换对象为数值时没看懂。2、然后我尝试了一下用Number()函数转换对象为数值时,结果都是NaN。3、所以如果有可以转换为数值类型的对象请举例,万分感谢解惑。
3 回答
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
你需要了解调用Number的时候,到底是怎么执行的?
根据js规范,如果参数是对象,会首先把对象转化为原始类型的数据,那么怎么转化为原始类型的数据呢?
比如
let a = {}
那么会首先调用a的valueOf方法,如果结果不是原始类型,那么调用toString方法:
a.valueOf()返回对象本身,不是原始类型,所以需要继续调用toString方法;
a.toString()返回"[object Object]",是一个字符串,是原始类型,所以接下来会调用Number("[object Object]"),返回NaN;
所以你如果想返回数字,那个我们就可以通过修改转化步骤中的返回值来改变结果,比如,可以修改valueOf的返回值:
let a = {}
a.valueOf = function () {return 2}
Number(a) // 2
或者修改toString的返回值:
let b = {}
b.toString = function () {return 3}
Number(b) // 3
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
let flag = false;
Number(flag)
//0
let b = new Boolean(false);
b //Boolean {false}
Number(b)
//0
可以转换的,会自动包装与拆包(包装类型) 默认 false -> 0 , true -> 1
不知道你问的是不是这个?不是的话,可以截个图书上说的具体是啥,哪里没明白
添加回答
举报
0/150
提交
取消