对象的基本操作
在 JavaScript 中,对象(Object)是一种复合数据类型,用于存储键值对(key-value pairs)。对象是 JavaScript 中最核心的概念之一,几乎所有的东西都可以看作是对象或与对象相关。
Object 的实例不具备多少功能,但对于在应用程序中存储和传输数据而言,它们确实是非常理想的选择。
创建对象的方式
1. 对象字面量
这是最常见和最简单的创建对象的方式。
let person = {
name: "Alice",
age: 25,
greet: function() {
console.log("Hello, my name is " + this.name);
}
};2. 使用 new Object()
new Object()你也可以使用 new Object() 来创建一个对象。
let person = new Object();
person.name = "Alice";
person.age = 25;
person.greet = function() {
console.log("Hello, my name is " + this.name);
};3. 使用构造函数
你可以定义一个构造函数,然后使用 new 关键字来创建对象。
function Person(name, age) {
this.name = name;
this.age = age;
this.greet = function() {
console.log("Hello, my name is " + this.name);
};
}
let person = new Person("Alice", 25);4. 使用 Object.create()
Object.create()Object.create() 方法创建一个新对象,使用现有的对象作为新对象的原型。
let personPrototype = {
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
let person = Object.create(personPrototype);
person.name = "Alice";
person.age = 25;访问对象属性
object 可以通过 . 和 [] 来访问。
. 和 [] 来访问。console.log(person.name); // 输出: Alice
console.log(person['age']); // 输出: 25修改对象属性
你可以通过赋值来修改对象的属性。
person.name = "Bob";
person['age'] = 30;删除对象属性
你可以使用 delete 操作符来删除对象的属性。
delete person.age;
console.log(person.age); // 输出: undefined对象方法
对象的方法就是对象的属性,只不过这个属性的值是一个函数。
person.greet(); // 输出: Hello, my name is Bobthis 关键字
在对象方法中,this 关键字引用的是调用该方法的对象。
let person = {
name: "Alice",
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
person.greet(); // 输出: Hello, my name is Alice遍历对象属性
你可以使用 for...in 循环来遍历对象的所有可枚举属性。
for (let key in person) {
console.log(key + ": " + person[key]);
}对象的原型
每个 JavaScript 对象都有一个原型(prototype),原型是一个对象,其他对象可以从它继承属性和方法。
let animal = {
speak: function() {
console.log(this.sound);
}
};
let dog = Object.create(animal);
dog.sound = "Woof";
dog.speak(); // 输出: Woof对象的静态方法
Object 构造函数本身也有一些有用的静态方法,例如 Object.keys()、Object.values() 和 Object.entries()。
let keys = Object.keys(person); // 返回对象的所有键
let values = Object.values(person); // 返回对象的所有值
let entries = Object.entries(person); // 返回对象的键值对数组对象的扩展与合并
你可以使用 Object.assign() 或扩展运算符(...)来合并对象。
let obj1 = { a: 1, b: 2 };
let obj2 = { b: 3, c: 4 };
let merged = Object.assign({}, obj1, obj2);
// 或者使用扩展运算符
let merged = { ...obj1, ...obj2 };
console.log(merged); // 输出: { a: 1, b: 3, c: 4 }对象的冻结与密封
你可以使用 Object.freeze() 和 Object.seal() 来防止对象被修改。
Object.freeze():冻结对象,不能添加、删除或修改属性。Object.seal():密封对象,不能添加或删除属性,但可以修改现有属性。
let obj = { a: 1, b: 2 };
Object.freeze(obj);
obj.c = 3; // 无效,对象已被冻结
Object.seal(obj);
obj.a = 10; // 有效
delete obj.a; // 无效,对象已被密封总结
JavaScript 中的对象是非常灵活和强大的数据结构,几乎所有的复杂数据都可以通过对象来表示。理解对象的创建、访问、修改、遍历以及原型链等概念,对于掌握 JavaScript 编程至关重要。
Last updated