原始类型的方法
- 前言
与原始数据类型相对的是引用数据类型。引用数据类型,许多内建对象具有不同的属性和方法,但是这些特性(feature)都是有成本的,需要额外的资源支持运作。
当做对象的原始类型
- 其实这是有些悖论的
- 人们可能想对诸如字符串或数字之类的原始类型执行很多操作。最好使用方法来访问它们。
- 原始类型必须尽可能的简单轻量。
- 为了使基本数据类型可以拥有方法,创建了提供额外功能的特殊对象包装器,使用后即被销毁。
- “对象包装器”对于每种原始类型都是不同的,它们被称为 String、Number、Boolean、Symbol 和 BigInt。因此,它们提供了不同的方法。
- 虽然会为原始类型提供额外的对象包装器,但是创建构造器 String/Number/Boolean 仅供内部使用
demo讲解
看似很简单的一个demo,实则进行了下面的转化
- 字符串 str 是一个原始值。因此,在访问其属性时,会创建一个包含字符串字面值的特殊对象,并且具有有用的方法,例如 toUpperCase()。
- 该方法运行并返回一个新的字符串(由 console 显示)。
- 特殊对象被销毁,只留下原始值 str。
原始类型的方法有哪些
- 所有 String的实例都继承自 String.prototype. 任何String.prototype上的改变都会影响到所有的 String 实例
- 以此 String、Number、Boolean、Symbol 和 BigInt. 通过prototype 都可以查看原始类型的方法
null和undefined
这俩兄弟,是开发时经常报的bug,从某种意义上说,它们是“最原始的”。它们没有对应的“对象包装器”,也没有提供任何方法😂