JavaScript

002 基本包装类型

2017-08-07  本文已影响4人  柏丘君

基本包装类型

JavaScript 中提供 3 个基本包装类型:NumberBooleanString。这些包装类型中提供了一些常用的处理方法,比如 toFixedsubstringsplit 等。

自动拆装箱

这几个基本包装类型中提供了操作 numberstringboolean 中的一些特殊方法,但我们在使用这些方法的时候,并不会手动去创建一个包装类型的实例,而是可以直接在基本数据类型上使用这些方法。这是因为我们在使用基本数据类型时会自动进行拆装箱操作。

(1).toFixed(2) //"1.00"
"hello".split("") //["h", "e", "l", "l", "o"]

我们在使用 . 点操作符来调用相应的方法或者属性时,会自动进行如下的几步处理:

也就是说,在使用 . 点操作符“调用”这些基本数据类型上的属性或方法时,会自动进行装箱操作,将基本数据类型装换为相应的包装类型,在执行完这一步操作后,再自动拆箱,销毁先前创建的包装类型。

不能为基本数据类型添加属性

上面谈到,在使用 . 点操作符(当然,对于[]属性访问符也是如此)对数据进行操作时,会创建一个对应的包装类型对象,而操作完成后,立马销毁这个包装类型的对象。因此,我们是无法为基本数据类型添加属性的。看下面代码:

let name = "MIKE"
name.id = 1
name.id //undefined

上面的代码运行时会进行以下几个步骤:

类型转换

使用 new 关键字调用包装函数会创建新的包装类型对象,如果直接调用包装类型的函数,并传入某个参数,就可以用来进行数据转换。

let str2Num = Number("25") //25
let bool2Num = Number(true) //1
...

使用类型转换方式调用包装函数,得到的仍然是基本数据类型。需要注意的是,基本数据类型的值不是其对应包装类型的实例。

str2Num instanceof Number //false
"hello" instanceof String //false

同时,包装类型的实例在转为 boolean 类型时总是 true

let boolObj = new Boolean(false)
boolObj && concole.log("真") //输出 "真"

Object 工厂

作为所有类的基类,Object 也可以接受一个基本类型的值,然后创建一个相应的包装类型对象。

let object2Num = new Object(123)
let object2Bool = new Object(true)
let object2String  = new Object("hello")

object2Num instanceof Number //true
object2Bool instanceof Boolean //true
object2String instanceof String //true

常用方法

下面列出一些常用的操作方法。
1.Number 类型

2.String 类型

完。

上一篇 下一篇

猜你喜欢

热点阅读