JavaScript 中字符串可以说的秘密

2023-09-18  本文已影响0人  纸飞机zhou

1、来看一些奇怪的现象

2、复习下基本数据类型

JavaScript 中,基本类型(基本数值、基本数据类型)是一种既非对象也无方法属性的数据。有 7 种原始数据类型:

以上摘自 MDN

3、既然是基本类型如何做到拥有String对象的方法呢?

基本类型没有方法,但仍然表现得像有方法一样。当在基本类型上访问属性时,JavaScript 自动将值装入包装器对象中,并访问该对象上的属性。例如,"foo".includes("f") 隐式创建了一个 String 包装对象,并在该对象上调用 String.prototype.includes()。这种自动装箱行为在 JavaScript 代码中是无法观察到的,但却是各种行为的一个很好的心理模型——例如,为什么“改变”基本类型不起作用(因为 str.Foo = 1 不是赋值给 str 本身的 Foo 属性,而是赋值给了一个临时包装器对象)

以上摘自 MDN
其实MDN中已经解释得很清楚了,当访问访问属性时其实是访问量一个临时被包装成 String 实例的对象。

这种隐式自动装箱行为在其他几个有对应包装类型的基本类型中也会发生:

类型 包装器对象
null N/A
undefined N/A
boolean Boolean
number Number
bigInt BigInt
string String
symbol Symbol

根据以上我们其实可以得出结论:
JavaScript 中除了 nullundefined 一切皆可以表现为对象。

上一篇 下一篇

猜你喜欢

热点阅读