数据类型-01

JavaScript 创建者面临的悖论:

  1. 有很多事情需要用像字符串或数字这样的基本类型来完成。这样要比直接访问他们方法要好。
  2. 基本类型必须尽可能的精简快速。

该解决方案看起来有点尴尬,是:

  1. 基本类型仍然是原始数据。根据需要提供单个值。
  2. JavaScript 允许访问字符串,数字,布尔值和符号的方法和属性。
  3. 当触发这种情况时,会创建一个特殊的“包装对象”,它提供额外的功能,运行后即被销毁。

以大小写转化函数str.toUpcase()为例,

  1. 字符串 str 是一个基本数据类型。所以在访问它的属性时,会创建一个已知字符串值的特殊对象,并且具有有用的方法,例如
    toUpperCase()。
  2. 该方法运行并返回一个新的字符串。
  3. 特殊对象被销毁,只留下基本数据类型 str。
    Tips.
    这也就是表面上给基本数据类型了一个新的属性,但是接下来处理对象的时候找不到属性的原因,因为带有新属性的对象已经销毁了。因为给基本数据类型分配属性有点不符合规范,所以有的浏览器会报错。所以取新属性的时候会出现两种情况,一种是Error,一种是undefined。

总结
基本类型可以提供方法,但它们依然是轻量级的。
特殊的基本类型 null 和 undefined 是个例外。他们没有相应的“包装对象”,也没有提供任何方法。从某种意义上说,他们是“最原始的”。
基本类型不是对象。
基本类型不能存储数据。
所有的属性/方法操作都是在临时对象的帮助下执行的。

javascript