1. 创建对象
// 字面量创建(推荐)
const person = {
name: "张三",
age: 25,
city: "北京",
sayHello: function () {
console.log(`你好,我是${this.name}`);
},
};
// 构造函数创建
function Person(name, age) {
this.name = name;
this.age = age;
this.greet = function () {
console.log(`Hi, I'm ${this.name}`);
};
}
const person1 = new Person("李四", 30);
// 使用 Object.create()
const personProto = {
greet() {
console.log(`Hello, ${this.name}`);
},
};
const person2 = Object.create(personProto);
person2.name = "王五";
2. 访问和修改属性
const user = {
name: "小明",
age: 20,
};
// 访问属性
console.log(user.name); // 点表示法
console.log(user["age"]); // 括号表示法
// 修改属性
user.name = "小红";
user["age"] = 21;
// 添加新属性
user.email = "xiaohong@example.com";
user["phone"] = "13800138000";
// 删除属性
delete user.phone;
3. 对象方法
const calculator = {
num1: 0,
num2: 0,
// 方法定义
setNumbers: function (a, b) {
this.num1 = a;
this.num2 = b;
},
// ES6简写方法
add() {
return this.num1 + this.num2;
},
subtract() {
return this.num1 - this.num2;
},
};
calculator.setNumbers(10, 5);
console.log(calculator.add()); // 15
console.log(calculator.subtract()); // 5
4. 遍历对象
const student = {
name: "张三",
age: 20,
grade: "A",
school: "清华大学",
};
// for...in 循环
for (let key in student) {
console.log(`${key}: ${student[key]}`);
}
// Object.keys()
const keys = Object.keys(student);
console.log(keys); // ['name', 'age', 'grade', 'school']
// Object.values()
const values = Object.values(student);
console.log(values); // ['张三', 20, 'A', '清华大学']
// Object.entries()
const entries = Object.entries(student);
entries.forEach(([key, value]) => {
console.log(`${key}: ${value}`);
});
5. 对象解构
const product = {
id: 1,
name: "手机",
price: 2999,
category: "电子产品",
};
// 基本解构
const { name, price } = product;
console.log(name, price); // 手机 2999
// 重命名
const { name: productName, price: productPrice } = product;
// 默认值
const { warranty = "1年" } = product;
// 嵌套解构
const company = {
name: "ABC公司",
address: {
city: "上海",
street: "南京路",
},
};
const {
name: companyName,
address: { city },
} = company;
6. 对象合并和克隆
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
// 合并对象(浅合并)
const merged = Object.assign({}, obj1, obj2);
// 或使用扩展运算符
const merged2 = { ...obj1, ...obj2 };
// 深度克隆(简单方式,不处理函数和特殊对象)
const shallowClone = { ...obj1 };
const deepClone = JSON.parse(JSON.stringify(obj1)); // 注意:会丢失函数和undefined
7. 计算属性名