紅寶書第十三講:詳解JavaScript核心對象:Array、Object、Date、RegExp
資料取自《JavaScript高級程序設計(第5版)》。
查看總目錄:紅寶書學習大綱
一、Object:萬物皆對象的“盒子”
Object是JavaScript中最基礎的數據容器,像動態存儲的抽屜,可隨時添加/刪除屬性,支持鍵值對存儲 [1]。
示例:創建用戶信息對象
// 方式1:字面量直接聲明
const user = {
name: '小明',
age: 20,
getInfo: function() {
return `${this.name}今年${this.age}歲`;
}
};
console.log(user.getInfo()); // "小明今年20歲"
// 方式2:構造函數new Object()
const car = new Object();
car.brand = 'Toyota';
car.drive = () => console.log('行駛中...');
car.drive(); // "行駛中..."
[1]: 參考資料3說明對象通過動態屬性管理數據
二、Array:有序的“列表清單”
數組是按順序排列的集合,每個元素有索引(從0開始),支持動態增刪改查 [2]。
示例:操作學生分數數組
// 創建數組(兩種方式)
const scores1 = [85, 92, 78]; // 字面量快捷方式
const scores2 = new Array(70, 88); // 構造函數
// 常用方法
scores1.push(95); // 末尾添加 → [85, 92, 78, 95]
scores1.pop(); // 刪除末尾 → [85, 92, 78]
const highScores = scores1.filter(score => score > 90); // 過濾 → [92]
const str = scores1.join("、"); // 轉字符串 → "85、92、78"
// 用map生成新數組
const comments = scores1.map(score =>
score >= 80 ? "優秀" : "待提高"
); // ["優秀", "優秀", "待提高"]
[2]: 參考資料6詳細列出了數組的push/filter/map等方法
flowchart LR
Array --> 元素1["85 [索引0]"]
Array --> 元素2["92 [索引1]"]
Array --> 元素3["78 [索引2]"]
Array --> 方法["push/filter/map"]
三、Date:時間管理的“日歷”
Date對象用于處理日期和時間的計算,能精確到毫秒 [3]。
示例:記錄事件時間
// 創建當前時間
const now = new Date();
console.log(now); // 輸出類似:Thu Dec 07 2023 14:30:00 GMT+0800
// 指定日期(注意月份從0開始)
const birthday = new Date(2000, 0, 1); // 2000年1月1日
console.log(birthday.getFullYear()); // 2000
// 計算時間差(毫秒為單位)
const diff = now - birthday;
const years = Math.floor(diff / (1000*60*60*24*365));
console.log(`年齡:${years}歲`);
[3]: 參考資料1和2重點描述了Date類型的方法(如getFullYear())
四、RegExp:文字偵探“正則表達式”
RegExp用模式匹配規則來查找或驗證字符串,類似通配符的增強版 [4]。
示例:驗證郵箱格式
// 創建正則表達式(兩種方式)
const emailPattern1 = /^[a-zA-Z0-9_]+@[a-z]+\.[a-z]+$/; // 字面量
const emailPattern2 = new RegExp('^\\w+@[a-z]+\\.[a-z]+$'); // 構造函數
// 測試字符串是否符合規則
console.log(emailPattern1.test('user@example.com')); // true
console.log(emailPattern1.test('invalid.email')); // false
// 提取字符串中的數字
const text = "訂單號:7890,金額:¥560";
const numbers = text.match(/\d+/g);
console.log(numbers); // ["7890", "560"]
[4]: 參考資料1和2提到RegExp的test方法和實例屬性
目錄:總目錄
上篇文章:紅寶書第十二講:詳解JavaScript中的工廠模式與原型模式等各種設計模式
腳注
-
《JavaScript高級程序設計(第5版)》討論了對象屬性管理方式(第8章對象屬性)。 ? ?
-
《JavaScript高級程序設計(第5版)》詳細說明數組操作方法(第6章Array類型)。 ? ?
-
《JavaScript高級程序設計(第5版)》中的“Date類型”章節描述時間處理方法。 ? ?
-
《JavaScript高級程序設計(第5版)》介紹了RegExp的創建和實例方法。 ? ?