网站内容告知书,简单的网页设计作品html,网络推广速成班,大公司网站色彩设计ToPrimitive 方法#xff0c;是js中每个值隐含的自带方法#xff0c;用来将值转换为基本类型。如果值为基本类型#xff0c;则返回本身#xff0c;否则#xff0c;进行转换#xff0c;返回基本类型值。
/**
* obj 需要转换的对象
* type 期望的结果类型 Number或String
…ToPrimitive 方法是js中每个值隐含的自带方法用来将值转换为基本类型。如果值为基本类型则返回本身否则进行转换返回基本类型值。
/**
* obj 需要转换的对象
* type 期望的结果类型 Number或String
*/
ToPrimitive(obj,type)
1、当type为Number时 调用obj的valueOf方法如果为原始值则返回否则进行下一步 调用obj的toString方法后续同上 抛出TypeError异常。
2、当type为String时 调用obj的toString方法如果为原始值则返回否则进行下一步 调用obj的valueOf方法后续同上 抛出TypeError异常。
默认情况下如果对象为Date对象则type默认为string其他情况下type默认为number。
综上所述基本规则可以概括为以下函数
var objToNumber value Number(value.valueOf().toString())
objToNumber([]) 0
objToNumber({}) NaN
js的隐式类型转换主要发生在、-、*、/ 以及、这些运算符之间。
1、操作符 操作符的两边至少一个string类型变量时两边的变量都会被隐式转换为字符串其他情况下两边变量都会变为数字。
2、-、*、/ 操作符 NaN也是一个数字 都转换为数字类型
3、操作符 操作符两边的值都尽量转为number类型
4、、操作符 如果两边都是字符串则比较字母表顺序 其他情况下转换为数字再比较。
5、对象类型会先通过ToPrimitive方法转换为基本数据类型再进行操作
var a {name:Jack}
var b {age: 18}
a b // [object Object][object Object]a.valueOf() // {}上面提到过ToPrimitive默认type为number所以先valueOf结果还是个对象下一步
a.toString() // [object Object]
b.valueOf() // 同理
b.toString() // [object Object]
a b // [object Object][object Object]