《JavaScript启示录》——1.11 原始值(String、Number、Boolean)在被用做对象时就像对象

简介: 原始值被当作构造函数创建的一个对象来使用时,JavaScript会将其转换为一个对象,以便可以使用对象的特性(如方法),而后抛弃对象性质,并将它变回到原始值。下面的代码采用了原始值,并展示了将值作为对象使用时会发生什么事情。

本节书摘来自异步社区《JavaScript启示录》一书中的第1章,第1.11节,作者:【美】Cody Lindley著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.11 原始值(String、Number、Boolean)在被用做对象时就像对象

原始值被当作构造函数创建的一个对象来使用时,JavaScript会将其转换为一个对象,以便可以使用对象的特性(如方法),而后抛弃对象性质,并将它变回到原始值。下面的代码采用了原始值,并展示了将值作为对象使用时会发生什么事情。

<!DOCTYPE html><html lang="en"><body><script>

// 生成原始值
var myNull = null;
var myUndefined = undefined;
var primitiveString1 = "foo";
var primitiveString2 = String('foo'); // 没有使用new因此获得的是原始值
var primitiveNumber1 = 10;
var primitiveNumber2 = Number('10'); // 没有使用new,因此获得的是原始值
var primitiveBoolean1 = true;
var primitiveBoolean2 = Boolean('true'); // 没有使用new,因此获得的是原始值

/* 使用toString()方法(从object.prototype继承而来)来演示:当把原始值用作对象时,原始值就会转化成对象 */

// 输出 "string string"
console.log(primitiveString1.toString(), primitiveString2.toString());

// 输出 "number number"
console.log(primitiveNumber1.toString(), primitiveNumber2.toString());

// 输出 "boolean boolean"
console.log(primitiveBoolean1.toString(), primitiveBoolean2.toString());

// 因为null和undefined没有转化成对象,也没有构造函数,所以下面2条语句会抛出错误
console.log(myNull.toString());
console.log(myUndefined.toString());

</script></body></html>

上述代码示例中,所有的原始值(除null和undefined)都被转换为对象,以便充分利用toString()方法。一旦调用和返回该方法,对象就会转换成原始值。

相关文章
|
16天前
|
JavaScript 前端开发
JavaScript 中如何检测一个变量是一个 String 类型?
JavaScript 中如何检测一个变量是一个 String 类型?
21 2
|
2月前
|
JavaScript 前端开发
javaScript Number 对象
avaScript Number 对象是 JavaScript 中用于表示数字的基本类型之一。它表示的数字可以是整数,也可以是浮点数。在 JavaScript 中,所有的数字都是 Number 类型的实例,可以通过 new Number() 构造函数来创建。此外,JavaScript 还提供了一些用于处理数字的常用方法和属性,例如 parseFloat()、parseInt()、isNaN()、is
97 6
|
3月前
|
JavaScript 前端开发
js数字(Number)方法汇总
js数字(Number)方法汇总
20 0
|
7天前
|
JavaScript
js 字符串String转对象Object
该代码示例展示了如何将一个以逗号分隔的字符串(`&#39;1.2,2,3,4,5&#39;`)转换为对象数组。通过使用`split(&#39;,&#39;)`分割字符串并`map(parseFloat)`处理每个元素,将字符串转换成浮点数数组,最终得到一个对象数组,其类型为`object`。
|
26天前
|
SQL JavaScript
js开发:请解释什么是ES6的模板字符串(template string),并给出一个示例。
ES6的模板字符串以反引号包围,支持变量和表达式插入以及多行书写。例如,插入变量值`Hello, ${name}!`,计算表达式`${num1 + num2}`,以及创建多行字符串。模板字符串保留原始空格和缩进,简化了字符串拼接,提高了代码可读性。
18 6
|
1月前
|
JavaScript 前端开发 Java
javascript中的String
javascript中的String
|
1月前
|
JavaScript 前端开发 索引
编程笔记 html5&css&js 067 JavaScript String数据类型
编程笔记 html5&css&js 067 JavaScript String数据类型
|
1月前
|
存储 JavaScript 前端开发
编程笔记 html5&css&js 066 JavaScript Number数据类型
编程笔记 html5&css&js 066 JavaScript Number数据类型
|
3月前
|
前端开发 JavaScript 算法
深入探究 JavaScript 中的 String:常用方法和属性全解析(下)
深入探究 JavaScript 中的 String:常用方法和属性全解析(下)
|
3月前
|
前端开发 JavaScript 索引
深入探究 JavaScript 中的 String:常用方法和属性全解析(中)
深入探究 JavaScript 中的 String:常用方法和属性全解析(中)