『Javascript基础重点』10.包装类


欢迎关注 『Javascript基础重点』 专栏,持续更新中
欢迎关注 『Javascript基础重点』 专栏,持续更新中
介绍一些Javascript的基础重点知识,包括并不限于函数作用域与提前声明和对象的构造函数等问题。

1. 背景知识

  • 基本数据类型(除了对象类型都是基本数据类型)
  • String Number Boolean Null Undefined
  • 引用数据类型
  • Object
  • 在JS中为我们提供了三个包装类,通过这三个包装类可以将基本数据类型的数据转换为对象
  • String()
  •   - 可以将基本数据类型字符串转换为String对象
    
  • Number()
  •   - 可以将基本数据类型的数字转换为Number对象
    
  • Boolean()
  •   - 可以将基本数据类型的布尔值转换为Boolean对象
    
  • 但是注意:我们在实际应用中不会使用基本数据类型的对象,
  •   如果使用基本数据类型的对象,在做一些比较时可能会带来一些不可预期的结果
    

如果不用String等对象的方法,其实很多时候我们不学这一节也没有关系,因为js内部自动帮我们进行转化,但是如果后面遇到了对象类型错误方面的问题就可能会很懵,这一节会帮你解答很多问题。


2. 引用类型对象的特殊之处

虽然2个引用类型指向各自的2个内存区域都存放““hello””这一相同的数据内容,但是比较两个引用类型的内存地址值时肯定会得到false的结果。

  • ==仅用来检测数值是否相等(定义较宽松)在规范中,==有着明确定义,从中可以看出,进行算法之前,我们要做的第一件事实际上就是确认变量类型。
  • ===检查数值及变量类型(严格比较)同样可以从规范中看到,===要求先检查变量类型,并且如果类型不同,则无需再比较数值。
 <script type="text/javascript">
      var str = new String("hello"); //创建一个内存区域a,str存放这一个内存区域a的引用地址
      var str2 = new String("hello"); //创建一个内存区域b,str存放这一个内存区域b的引用地址
      //虽然2个引用类型指向各自的2个内存区域都存放“"hello"”这一相同的数据内容,但是比较两个引用类型的内存地址值时肯定会得到false的结果
      console.log(str === str2); //false // 数据类型相同,数据值不相同(两者的引用指向地址不同)
      console.log(str == str2); //false  // 数据类型相同,数据值不相同
  </script>

3. 引用类型对象不能与基本数据类型直接比较

 <script type="text/javascript">
      //创建一个Number类型的对象
      var num = 3;
      var num2 = new Number(3);
      console.log(num === num2); //false  一个基本对象一个引用对象,数据类型不同
      console.log(num == num2); //true    两者的数据值相同

      var bool = new Boolean(true);
      var bool2 = true;
      console.log(bool === bool2); //false 一个基本对象一个引用对象,数据类型不同
      console.log(bool == bool2); //true  两者的数据值相同
</script>

4. 拓展问题:基本类型变量能不能添加方法和属性?

  • 方法和属性之能添加给对象,不能添加给基本数据类型
  • 当我们对一些基本数据类型的值去调用属性和方法时,
  •   浏览器会临时使用包装类将其转换为对象,然后在调用对象的属性和方法
    
  •   调用完以后,在将其转换为基本数据类型
    
  • 引用类型可以有方法和属性
 <script type="text/javascript">
	  //对象类型才可以有绑定的属性和方法
      var b = new Boolean(false);
      if (b) {
        alert("我运行了~~~"); 我运行了~~~
      }
  </script>
  • 基本类型
 <script type="text/javascript">
      var qwer = 1;
      console.log(typeof qwer); //number
      qwer = qwer.toString(); //将qwer转为对象->  非基本类型String类型 ->基本类型string类型,这个中间过程就是我们本节学习的内容
      console.log(typeof qwer); //string
      qwer.hello = "你好"; //这里会临时帮我们转为 非基本类型绑定属性,但是因为原来是基本类型,最后还是回到基本类型,把绑定好的hello属性销毁掉
      console.log(qwer.hello); //undefined 基本类型不能绑定属性
      console.log(typeof qwer); //string
  </script>

总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2023 mzh

Crated:2023-3-1

欢迎关注 『Javascript基础重点』 专栏,持续更新中
欢迎关注 『Javascript基础重点』 专栏,持续更新中
『1.提前声明问题,你苦恼写了js函数代码但是不会生效的问题吗?』
『2.易错点之函数形参与函数作用域的坑』
『3.了解原型对象优雅地构造函数の“JS中的Java继承” 提高运行效率,优雅地使用对象』
『4.JS垃圾回收机制简析』
『5.以toString()为例学习JS中的java方法重写』
『6.数组的常用方法与数组遍历』
『7.函数进阶之call()和apply()与arguments』
『8.Date类与利用时间戳来测试代码的执行的性能』
『9.Math类方法』
『10.包装类』
『11.字符串的方法』
『12.正则表达式介绍 邮件正则表达式写法』
『13.dom的应用』
『未完待续』


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发现你走远了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值