JavaScript 引用类型实例详解
在 JavaScript 中,引用类型是一种数据结构类型,它们不同于基本类型,基本类型是按值传递,而引用类型则是按引用传递,即在内存中存放的是该值在堆内存中存放的地址,而不是该值本身。常见的引用类型包括数组、对象、函数等。
数组
数组是一种可以存储一组有序数据的集合,它是一种可以动态扩展的对象。数组的声明方式如下:
let arr = []; //空数组
let arr2 = [1, 2, 3]; //具有 3 个元素的数组
let arr3 = new Array(); //空数组
let arr4 = new Array(1, 2, 3); //等同于 [1,2,3]
数组元素可以为任意类型,并且可以动态增加和删除元素。数组的常用操作包括:
- 访问数组元素
对数组元素的访问可以通过下标来实现,例如 arr[0] 表示访问数组中第一个元素。注意数组下标从 0 开始,访问不存在的数组元素将返回 undefined。
- 数组的遍历
可以使用 for 循环遍历数组元素,例如:
let arr = ['a', 'b', 'c'];
for(let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
- 数组的扩展和截取
可以使用 push() 和 unshift() 方法对数组末尾或开头插入元素,pop() 和 shift() 方法可以从数组的末尾或开头删除元素。使用 slice() 方法可以截取数组的一部分,splice() 方法可以在任意位置添加或删除元素。
对象
对象是一种无序的属性集合,可以包含多种类型的值。对象的声明方式如下:
let obj = {}; //空对象
let obj2 = {name: 'Tom', age: 18}; //具有 name 和 age 属性的对象
let obj3 = new Object(); //等同于 {}
let obj4 = new Object({name: 'Jerry'}); //等同于 {name: 'Jerry'}
对象的属性可以是任意类型,并且可以动态增加、删除和修改属性。对象的常用操作包括:
- 访问对象属性
可以使用点符号或方括号来访问对象的属性,例如 obj.name 和 obj['name'] 都可以访问对象的 name 属性。如果对象不存在该属性,则返回 undefined。
- 对象的遍历
可以使用 for-in 循环遍历对象的属性,例如:
let obj = {name: 'Tom', age: 18};
for(let key in obj) {
console.log(key + ': ' + obj[key]);
}
- 对象的增删改查
可以使用 . 和 [] 运算符对对象属性进行增、删、改、查操作。例如 obj.name = 'Jerry' 可以修改对象的 name 属性,delete obj.age 可以删除对象的 age 属性。
严格模式
JavaScript 的严格模式是一种执行模式,它有助于消除 JavaScript 弱类型和不安全的部分,从而提高代码的健壮性。严格模式声明方式如下:
'use strict';
在严格模式下,有以下变化:
- 变量必须先声明后使用
在严格模式下,未经声明的变量或函数不能使用。
- 函数中的 this 值是 undefined
在严格模式下,在函数中使用 this 关键字时,它的值是 undefined。
- 禁止对只读属性赋值
在严格模式下,尝试对只读属性(如对象的 length 属性)进行赋值会报错。
- 立即调用函数表达式必须使用括号包裹
在严格模式下,立即调用函数表达式必须使用括号包裹。
示例说明一:使用数组创建堆栈
可以使用数组的 push() 和 pop() 方法来模拟堆栈。例如:
let stack = [];
stack.push(1); // 入栈 1
stack.push(2); // 入栈 2
stack.pop(); // 出栈 2
示例说明二:使用对象创建链表
可以使用对象来模拟链表,例如:
let list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: null
}
}
}
以上就是 JavaScript 引用类型的详细讲解,希望对你有所帮助。