欢迎光临
我们一直在努力

JavaScript 中的引用类型实例详解,数组、对象与严格模式如何运作?

JavaScript 引用类型实例详解

JavaScript 中的引用类型实例详解,数组、对象与严格模式如何运作?

JavaScript 中有两种主要的数据类型:基本类型和引用类型,基本类型包括NumberStringBooleanUndefinedNullSymbol,而引用类型则包括ObjectArray,本文将详细讲解数组、对象以及严格模式等引用类型的使用和注意事项。

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() {
    // 严格模式下的代码
}

严格模式的特点

禁止使用未声明的变量:在严格模式下,如果尝试使用未声明的变量会抛出错误。

禁止删除不可删除的属性:在严格模式下,不能删除不可删除的属性。

禁止重复定义参数:在严格模式下,函数参数不能有重复的名称。

JavaScript 中的引用类型实例详解,数组、对象与严格模式如何运作?

禁止八进制语法:在严格模式下,不允许使用以零开头的八进制数。

禁止某些操作符:在严格模式下,某些操作符的行为会有所不同。

禁止给只读属性赋值:在严格模式下,不能给只读属性赋值。

禁止删除未定义的属性:在严格模式下,不能删除未定义的属性。

禁止扩展全局对象:在严格模式下,不能直接扩展全局对象。

禁止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

相关问题与解答

JavaScript 中的引用类型实例详解,数组、对象与严格模式如何运作?

问题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 引用类型实例详解【数组、对象、严格模式等】”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《JavaScript 中的引用类型实例详解,数组、对象与严格模式如何运作?》
文章链接:https://yuyunkj.com/article/10876.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发