原始值包装类型的转换标准

lxf2023-12-16 12:40:01

一. 原始值包装类型

在 JS 中,原始值(基础数据)类型是并没有属性和方法,可是为了便于实际操作引用类型,ES 带来了三种特殊引用类型 ----- 原始值包装类型。Boolean 、Number 、String。即他们仨要在他们原先的基础上外包装,给它授予一些属性和方法!!!

每每用到原始值的办法或特性时,后台管理都是会创建一个对应的原始值包装类型的对象,方法如下:

  • 建立相匹配原始值包装类型的对象
  • 启用相关方法 or 特性(length)
  • 立刻消毁目标
let a = "abc";
console.log(a.length); // 实行到转行时,JS 会将 "abc"在平台上转换成 String("abc"),
随后浏览其自己身上的 length 特性,随后执行完转行后,会立刻把 String("abc") 目标消毁!!!!

装车 && 开箱:

  • 装车 JS 还可以通过 Object() 函数公式显式地将基本上数据转换为包装类型!!!

原始值包装类型的转换标准

  • 开箱 也可以用 valueOf() 方式把外包装数据转换为基本数据类型。在引用类型目标上启用此方法,会回到它原始值种类,要是没有,就回到该目标自身!!!!

!!!留意:

原始值包装类型的实例对象的申明周期时间存在于浏览它哪行编码期内 ,因此不能给原始值包装类型的对象添加属性!!

二. 隐式类型转换标准

JS 里的隐式类型转换一般发生在 - * / 及其 == > < ! 运算符中间。但这些运算符只有实际操作原始值种类,当然如果谈恋爱了,便会先启用 valueOf() 方式,假如返回是原始值种类,就马上回到,要不是,就继续启用 toString() 方式!!!

不同类型的操作符有着不同的转换方法:

<1> 加 【主 string】

  • 种类一样直接用

     - string   string
     - number   number
    
  • string number 都转换成 string 种类!!

     - string   number ===> string   string
    
  • 其他种类:boolean、null、undefined 转换成 string

  • 假如谈恋爱了,就启用目标自己身上的 toString() 方式把它转化为字符串数组,然后按照字符串数组开展 计算!!!

<2>- * / 减乘除 【主 number】

  • 两侧数值都能被转换成 number 种类,然后再进行计算!!
  • 目标首先会 valueOf() ,随后 toString(), 最终Number()

留意: NaN 都是 number 种类,一切涉及到 NaN 的计算,传参均为 NaN!!

<3>>= <= 较为 【主 number】

  • string > string 无需开展变换,立即按序一个一个字符较为 ASCII 码的值就可以!!!

  • boolean 立即转换成 number

    - true ----> 1
    - false ----> 0
    
  • string > number ===> number > number

  • 假如谈恋爱了,就 valueOf() ,不好再 toString() !!

      - 然后依据前边规则进行对比!!
    

<4>== != === !== 相同运算符

(1) != 和 == 将进行数据转换 【主 number】

  • boolean 立即转换成 number

    - true ----> 1
    - false ----> 0
    
  • string == number ---> number == number

  • 假如谈恋爱了,先 valueOf() ,不好再 toString()

     - 然后依据前边规则进行对比!!
    
  • 遇上 NaN ,就回到 false!!

(2) !== 和 === 不容易开展数据转换

  • 种类不一样就马上回到 false

板栗:

var a = {};
a > 2  // false

// 内容涉及的隐式转换全过程如下所示:
先向 > 运算符两侧数值启用ToPrimitive()方式,都转换成原始值种类。
- 针对 {} ,先启用 {}.valuef() ,因为{}不会有与其相对应的原始值种类(即无法开箱),
于是就会回到该目标自身,即{}
- 然后启用 {}.toString() 方式,因为 {} 是 Object案例,因此这里的 toString() 方式,
便是Object原形里的toString()方式(未经重新写过的),于是就会回到字符串数组"[object Object]"

而 "[object Object]" > 2  
- > 运算符 主 number ,所以将"[object Object]"转换成 number 为非 NaN 
- NaN > 2  // false

原始值包装类型的转换标准

针对 toString() 方式:

 console.log({1:1}.toString())
 console.log([1,2].toString())
 console.log(new Date().toString())

原始值包装类型的转换标准

看是否有重新写过此方法了!!!

本站是一个以CSS、JavaScript、Vue、HTML为中心的前端开发技术网址。我们的使命是为众多前端工程师者提供全方位、全方位、好用的前端工程师专业知识和技术服务。 在网站上,大家可以学到最新前端开发技术,掌握前端工程师最新发布的趋势和良好实践。大家提供大量实例教程和实例,让大家可以快速上手前端工程师的关键技术和程序。 本站还提供了一系列好用的工具软件,帮助你更高效地开展前端工程师工作中。公司提供的一种手段和软件都要经过精心策划和改进,能够帮助你节约时间精力,提高研发效率。 此外,本站还拥有一个有活力的小区,你可以在社区里与其它前端工程师者沟通交流技术性、交流经验、处理问题。我们坚信,街道的能量能够帮助你能够更好地进步与成长。 在网站上,大家可以寻找你需要的一切前端工程师网络资源,使您成为一名更加出色的网页开发者。欢迎你添加我们的大家庭,一起探索前端工程师的无限潜能!