Z
ZHANK
数组与对象

对象基础

理解对象创建、属性访问、方法定义

对象基础

JavaScript 对象是键值对的集合,除了原始类型外的所有值都是对象。

学完本章你将: 理解对象创建、属性访问、方法定义。


创建对象

javascript
// 对象字面量(最常用)
let person = {
    name: "Alice",
    age: 25,
    isStudent: false,
};

// new 构造函数
let obj = new Object();
obj.key = "value";

// Object.create
let prototype = { greet() { return "Hello"; } };
let child = Object.create(prototype);
console.log(child.greet()); // "Hello"

属性访问

javascript
let user = {
    "first name": "Alice", // 带空格的键需要引号
    age: 25,
};

// 点号访问
console.log(user.age); // 25

// 方括号访问(支持变量和特殊字符)
console.log(user["first name"]); // "Alice"
let key = "age";
console.log(user[key]); // 25

// 动态 key
let field = "email";
user[field] = "alice@example.com";
console.log(user.email); // "alice@example.com"

属性简写与方法

javascript
let name = "Bob";
let age = 30;

// ES6 属性简写
let user = {
    name,   // 等于 name: name
    age,    // 等于 age: age

    // 方法简写
    greet() {
        return `Hello, I'm ${this.name}`;
    },

    // 计算属性名
    ["get" + "Age"]() {
        return this.age;
    },
};

console.log(user.greet());     // "Hello, I'm Bob"
console.log(user.getAge());    // 30

增删查改

javascript
let car = { brand: "Toyota" };

// 增加属性
car.model = "Camry";
car["year"] = 2024;

// 修改属性
car.brand = "Honda";

// 删除属性
delete car.model;

// 检查属性
console.log("brand" in car);            // true
console.log(car.hasOwnProperty("brand")); // true
console.log(car.color !== undefined);   // false

console.log(car); // { brand: "Honda", year: 2024 }

遍历对象

javascript
let person = { name: "Alice", age: 25, city: "北京" };

// 遍历键
for (let key in person) {
    console.log(key, person[key]);
}

// Object 方法
console.log(Object.keys(person));   // ["name", "age", "city"]
console.log(Object.values(person)); // ["Alice", 25, "北京"]
console.log(Object.entries(person));
// [["name","Alice"], ["age",25], ["city","北京"]]