JavaScrip 中的 字符串 是 简单数据类型 , 如下面的 str 变量 , 是 简单数据类型 String 类型 , 表示文本类型 和 字符序列 ;
// 字符串类型变量
var str = 'Hello World';
// 打印字符串类型的长度
console.log(str.length);
上述代码执行后 , 最终调用 str.length 属性 , 得到的值为 11 ;
完整代码示例 :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 设置 meta 视口标签 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no,maximum-scale=1.0,minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>JavaScript</title>
<style></style>
<script>
// 字符串类型变量
var str = 'Hello World';
// 打印字符串类型的长度
console.log(str.length);
</script>
</head>
<body>
</body>
</html>
执行结果 :
在上述代码中 , var str = 'Hello World';
是一个简单数据类型 ,
简单数据类型 是没有 成员变量 和 成员属性的 ,
之所以能调用 String 简单数据类型的 的 length 属性 ,
是因为 这是 JavaScript 为 String 字符串类型做了一层基本包装 ;
除了 String 字符串类型之外 , Number 数字类型 和 Boolean 布尔值类型 都是 基本包装类型 ;
JavaScript 语言中 有 3 种 基本装包类型 :
var str = 'Hello World'
字面量 或 var str = new String('Hello World')
构造函数创建 ;var num = 66
字面量 或 var num = new Number(66)
构造函数 创建 ;var bool = true
字面量 或 var bool = new Boolean(true)
构造函数 创建 ;'true'
或 'false'
;基本包装类型 可以在基本数据类型上调用 方法 和 属性;
在调用 上述类型的 变量 的 方法和属性 时 , JavaScript 会自动将这些 基本数据类型 转换为相应的 包装对象 ;
这个包装过程 , 将 简单数据类型 包装成了 复杂数据类型 ;
以 var str = 'Hello World';
String 字符串类型的变量为例 , 分析 将 字符串类型变量 包装成 复杂数据类型对象 的 过程 ;
// 字符串类型变量
var str = 'Hello World';
// 打印字符串类型的长度
console.log(str.length);
如果只使用 str 变量的值 , 不调用 str.length 属性 , 包装过程不会发生 ,
一旦开始调用了 str 变量的 length 属性 , JavaScript 引擎就会将 str 变量包装成 复杂数据类型对象 ;
String 字符串 基本包装类型的包装过程 :
var temp = new String('Hello World');
str = temp;
temp = null;