包装对象

  • 包装对象:

    • Number()
    • String()
    • Boolean()
  • 原始类型可以使用方法与属性:

    let num = 55;
    console.log(typeof num.toString())//string
    
    let str = 'hello';
    console.log(str.split(''));//[ 'h', 'e', 'l', 'l', 'o' ]
    
    console.log(str.length)//5
    

    如上,以str来说,直观上看是一个原始类型调用了一个方法,但其实还是js帮由对象new String(str)帮我们调用了属性或方法。

    又例如:

    let str = 'hello';//定义原始类型
    str.name = 'xiaohu';//定义属性name,执行后帮我们调用new String(str)这个包装对象 且等于'xiaohu',但是在执行之后就销毁了str.name
    console.log(str.name);//这里又帮我们调用new String(str)这个包装对象,但这次没有'xiaohu',这个值,所以会输出undefined
    

    我们自己创建一个包装对象:

    let num1 = new Number(123);
    let num2 = new Number(123);
    console.log(num1 === num2)//false
    //创建一个原始类型num3
    let num3 = 123;
    console.log(num1 === num3)//false
    

    所以说,包装对象与包装对象比较的不是值,所以我们尽量不要主动创建包装对象,包装对象的创建会在后台自己解析且创建的。

  • 包装对象的作用:

    • 包装对象:

      • String()
      • Number()
      • Boolean()
    • 包装对象的作用:创建包装对象的构造函数可以用来做类型转换,例如:

      let num = 123;
      console.log(typeof num);//number
      console.log(typeof num.toString())//string
      console.log(typeof toString(num));//string
      

类型转换

  • 类型装换可以分为:

    • 显示装换(强制转换)

      let i = 10;
      let j = 20;
      console.log(Number(i)+Number(j));//30
      
      • 显示转换包括:
        1. Number()
        2. String()
        3. Boolean()
        4. toString()
        5. parseInt()
        6. paesrFloat()
    • 隐式转换(自动转换)

      • 包括:
        1. if语句
        2. while语句
        3. 逻辑与
        4. 逻辑或
        5. 逻辑非
        6. :使用=可代替==,既可以避免歧义,也可以提升性能。
  • 关于null与undefined是否可以调用toString()

    let i = null;
    console.log(i.toString());//Cannot read property 'toString' of null
    

    可以看到,浏览器抛出了错误,在上一模块中,我们谈到,原始类型在调用方法或属性的时候会由后台帮我们调用相应的对象。例如使用Number() 会调用new Number(xx)的包装对象。

    而在上例子中的null(同undefined)是没有相应的包装对象的。

  • 各种数据类型实现类型转换:(if条件)

    • 数值类型只有0和NaN会转换成false
    • null和undefined都会转换成false
    • 空字符串会转换成false,其他的为true
    • 所有对象都会转换成true
  • 关于逻辑与

    console.log(10 && 20)//20
    console.log(0 && 20)//0
    
    • 逻辑与左侧的值转换成布尔值,如果为true,那么逻辑与表达式的返回值就是第二个值。如果左侧为false,那么返回值就是第一个值。
 posted on   Warm-px  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示