当前位置:嗨网首页>书籍在线阅读

20-Number, String和Boolean对象

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

3.13 Number, String和Boolean对象

本章一开始就提到:数字、字符串和布尔型都有对应的对象类型( NumberStringBoolean )。这些对象有两个用途:一是存储特殊值(比如 Number. INFINITY ),二是以函数的形式提供某些功能。看看下面的例子:

const s = "hello";
s.toUpperCase();                     // "HELLO"

这个例子中, s 看起来像是一个对象(就好像它有一个函数属性,这里在访问它的函数属性)。但事实很清楚: s 是基本的字符串类型。那么这是怎么回事呢?JavaScript所做的事情就是创建了一个临时的 String 对象(该对象有一个 toUpperCase 函数)。一旦这个函数被调用了,该临时对象就会被删除。为了证明这一点,来尝试给字符串指定一个属性:

const s = "hello";
s.rating = 3;                       // 咦,竟然没报错,成功了?
s.rating;                           // undefined

JavaScript允许这么做,这看起来像是给字符串 s 指定了一个属性。而实际上,是在给JavaScript创建的临时String对象指定了一个属性。这个对象在使用后会立刻被删除,这就是为什么 s.rating 返回的结果是 undefined

JavaScript的这个行为对程序员来说是透明的,程序员几乎不用(如果有)去思考它,但是了解JavaScript在背后做了什么是非常有用的。