js中常见的内置对象和拆箱装箱

99 阅读1分钟

一.三种包装对象,基本类型里的包装对象

string number boolean 
//通过构造函数String Number Boolean在内部做了一层转换
//可以转换成对象的形式
var str = 'hhh'
var str = new String('hello')
str.方法() 
包装对象的实现原理:
    调用方法时,内部创建了对象并调用方法,调用完方法后将对象清空

二.其他内置对象

Array Function Date Object Math

三.装箱和拆箱

装箱:将基本数据类型转化为对应的引用数据类型的操作 
    var num = 123  //number
    var objNum = new Number(123)  //object
拆箱:将引用数据类型转化为对应的值类型对象 
    //调用valueOf() 将引用类型转化为值类型 
    //内部方法 toPrimitive(input,type) 
        input:传入的值 
        type:值类型
        1.判断input是不是原始类型的值:是,直接返回
        2.不是:input.valueOf():是,直接返回
        3.还不是:input.toString():string是原始类型 返回
        4.报错
    valueOf():input 原始类型:有:返回,没有:返回对象本身
    toString():input 字符串转换,如果是对象输出:[object type] type:对象的类型
测试题:
    1. console.log([]+[])  //输出''空字符串
       //当遇到+号时内部会去调用toPrimitive()
    2.console.log([]+{})   //输出[object Object]
    3.console.log({}+[])  //输出[object Object]或0
    原因是有些浏览器会把{}识别成代码块,console.log(+'') //0