todo 没看懂
//装箱:把基本数据类型转化为对应的引用数据类型的操作;
//var num=123//number
// var objNum = new Number(123)// obejct
//console.log(typeof objNum)//null
//拆箱:将引用类型对象转换为对应的值类型对象;
//valueof()
// var objNum = new Number(123)
//console.log(typeof objNum.valueof())//123 number
// js toPrimitive(input,type)input:传入的值type:值类型
//1.input判断是不是原始类型的值:是直接返回
//2.不是:|input.valueof():是原始类型;直接返回
//3.还不是:input.toString():string是原始类型返回
//4.报错
//valueof():input原始类型的值;有:返回,没有;返回对象本身
//tostring():input字符串转换;对象:[object type]type:对象类型
//面试题
console.log([]+[])//"+toPrimitive()
console.log([].valueof())//
装箱和拆箱
2.面试题
“js中原始数据类型有:Number、String、Boolean、Null、Undefined、Symbol (ES6引入的一种数据类型,表示独一无二的值)”
装箱与拆箱的概念
装箱:把基本数据类型转化为对应的引用数据类型的操作;
如何实现:
var num = 123 // number
var objNum = new Number(123) // object
拆箱:将引用类型对象转换为对应的值类型对象;
如何实现:
调用object.valueOf()方法实现
objNum.valueOf() //123
内部如何实现:
toPrimitive(input,type) //input:传入值,type:值类型
// input 判断是不是原始类型的值:如果是,直接返回,
如果不是调用 input.valueOf() 是原始类型,直接返回,
还不是:调用input.toString 直接返回字符串
或者报错
valueOf() 是原始类型的值,直接返回,没有,就返回对象本身
toString() input字符串转换;对象:[object,type] type:对象类型
两道面试题
console.log([]+[]) // ''
console.log({}+[])//[object object] 或 0