JavaScript 引用类型实例详解

JavaScript 中有两种主要的数据类型:基本类型和引用类型,基本类型包括Number、String、Boolean、Undefined、Null 和Symbol,而引用类型则包括Object 和Array,本文将详细讲解数组、对象以及严格模式等引用类型的使用和注意事项。
1. 数组(Array)
创建数组
// 使用 Array 构造函数
let arr1 = new Array();
let arr2 = new Array(5); // 创建一个长度为5的空数组
let arr3 = new Array('a', 'b', 'c'); // 创建一个包含 'a', 'b', 'c' 的数组
// 使用字面量语法
let arr4 = [];
let arr5 = [1, 2, 3];
常用方法
| 方法名 | 描述 |
| push | 向数组末尾添加一个或多个元素 |
| pop | 移除数组末尾的一个元素 |
| shift | 移除数组的第一个元素 |
| unshift | 向数组开头添加一个或多个元素 |
| slice | 返回一个新的数组,包含从 start 到 end(不包括该元素) |
| splice | 通过删除或替换现有元素来修改数组的内容 |
| concat | 合并两个或多个数组,不改变现有数组 |
| join | 将数组的所有元素连接成一个字符串 |
| reverse | 反转数组中元素的顺序 |
| sort | 对数组的元素进行排序 |
| map | 创建一个新数组,其结果是该数组中的每个元素调用一次提供的函数后的返回值 |
| filter | 创建一个新数组,包含所有通过所提供函数实现的测试的元素 |
| reduce | 对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值 |
示例代码
let fruits = ['apple', 'banana', 'cherry'];
fruits.push('date'); // ['apple', 'banana', 'cherry', 'date']
fruits.pop(); // ['apple', 'banana', 'cherry']
fruits.unshift('elderberry'); // ['elderberry', 'apple', 'banana', 'cherry']
fruits.shift(); // ['apple', 'banana', 'cherry']
let slicedFruits = fruits.slice(1, 3); // ['banana', 'cherry']
fruits.splice(1, 0, 'blueberry'); // ['apple', 'blueberry', 'cherry']
let combinedFruits = fruits.concat(['dragonfruit']); // ['apple', 'blueberry', 'cherry', 'dragonfruit']
let joinedFruits = fruits.join(', '); // 'apple, blueberry, cherry'
let reversedFruits = fruits.reverse(); // ['cherry', 'blueberry', 'apple']
let sortedFruits = fruits.sort(); // ['apple', 'blueberry', 'cherry']
let mappedFruits = fruits.map(fruit => fruit.toUpperCase()); // ['APPLE', 'BLUEBERRY', 'CHERRY']
let filteredFruits = fruits.filter(fruit => fruit.length > 6); // ['blueberry']
let reducedFruits = fruits.reduce((acc, fruit) => acc + fruit, ''); // 'appleblueberrycherry'
2. 对象(Object)
创建对象
// 使用对象字面量
let obj1 = {};
let obj2 = { name: 'John', age: 30 };
// 使用 Object 构造函数
let obj3 = new Object();
let obj4 = new Object({ name: 'Jane', age: 25 });
访问和修改属性
let person = { name: 'Alice', age: 28 };
console.log(person.name); // 'Alice'
console.log(person['age']); // 28
person.age = 29; // 修改属性值
person['city'] = 'New York'; // 添加新属性
delete person.city; // 删除属性
遍历对象属性
for (let key in person) {
if (person.hasOwnProperty(key)) {
console.log(key + ": " + person[key]);
}
}
示例代码
let car = { make: 'Toyota', model: 'Corolla', year: 2020 };
console.log(car.make); // 'Toyota'
car.year = 2021; // 修改属性值
car['color'] = 'red'; // 添加新属性
delete car.model; // 删除属性
for (let key in car) {
if (car.hasOwnProperty(key)) {
console.log(key + ": " + car[key]);
}
}
3. 严格模式(Strict Mode)
启用严格模式
"use strict";
function myFunction() {
// 严格模式下的代码
}
严格模式的特点
禁止使用未声明的变量:在严格模式下,如果尝试使用未声明的变量会抛出错误。
禁止删除不可删除的属性:在严格模式下,不能删除不可删除的属性。
禁止重复定义参数:在严格模式下,函数参数不能有重复的名称。

禁止八进制语法:在严格模式下,不允许使用以零开头的八进制数。
禁止某些操作符:在严格模式下,某些操作符的行为会有所不同。
禁止给只读属性赋值:在严格模式下,不能给只读属性赋值。
禁止删除未定义的属性:在严格模式下,不能删除未定义的属性。
禁止扩展全局对象:在严格模式下,不能直接扩展全局对象。
禁止this关键字指向全局对象:在严格模式下,函数内部的this不会默认指向全局对象。
示例代码
"use strict";
function testStrictMode() {
// x is not defined, will throw an error in strict mode
x = 10;
}
testStrictMode(); // Uncaught ReferenceError: x is not defined
相关问题与解答

问题1:如何在JavaScript中创建一个包含特定元素的数组?
答:可以使用数组字面量语法或者Array 构造函数来创建一个包含特定元素的数组。
let fruits = ['apple', 'banana', 'cherry']; // 使用字面量语法 let numbers = new Array(1, 2, 3, 4, 5); // 使用构造函数
问题2:如何遍历一个对象的可枚举属性?
答:可以使用for...in 循环来遍历一个对象的可枚举属性。
let person = { name: 'Alice', age: 28, city: 'New York' };
for (let key in person) {
if (person.hasOwnProperty(key)) {
console.log(key + ": " + person[key]);
}
}
各位小伙伴们,我刚刚为大家分享了有关“JavaScript 引用类型实例详解【数组、对象、严格模式等】”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!











