JavaScript 对象是 JavaScript 中最基本的数据结构之一,用于存储键值对的集合。对象是属性的容器,其中每个属性都有一个名称(key)和一个值(value)。
有几种方式可以创建 JavaScript 对象:
const person = {
name: 'John',
age: 30,
isStudent: false,
greet: function() {
console.log('Hello!');
}
};
new Object()
const person = new Object();
person.name = 'John';
person.age = 30;
function Person(name, age) {
this.name = name;
this.age = age;
}
const john = new Person('John', 30);
Object.create()
const personProto = {
greet: function() {
console.log('Hello!');
}
};
const john = Object.create(personProto);
john.name = 'John';
// 点表示法
console.log(person.name); // 'John'
// 方括号表示法
console.log(person['age']); // 30
// 动态访问属性
const propName = 'name';
console.log(person[propName]); // 'John'
对象可以包含函数作为属性值,这些函数称为方法:
const person = {
name: 'John',
sayHello: function() {
console.log(`Hello, my name is ${this.name}`);
}
};
person.sayHello(); // "Hello, my name is John"
const name = 'John';
const age = 30;
const person = { name, age };
// 等同于 { name: name, age: age }
const person = {
name: 'John',
sayHello() {
console.log('Hello!');
}
};
const propName = 'age';
const person = {
name: 'John',
[propName]: 30
};
console.log(person.age); // 30
person.job = 'Developer';
person['country'] = 'USA';
delete person.age;
console.log('name' in person); // true
console.log(person.hasOwnProperty('name')); // true
for (let key in person) {
console.log(`${key}: ${person[key]}`);
}
// 获取所有属性名
const keys = Object.keys(person);
// 获取所有属性值
const values = Object.values(person);
// 获取所有键值对
const entries = Object.entries(person);
const copy = Object.assign({}, person);
// 或使用扩展运算符
const copy = { ...person };
const deepCopy = JSON.parse(JSON.stringify(person));
// 注意:这种方法会丢失函数和特殊对象类型
JavaScript 使用原型继承:
const animal = {
eats: true
};
const rabbit = {
jumps: true,
__proto__: animal // 设置原型
};
console.log(rabbit.eats); // true (从原型继承)
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name}`);
}
}
const john = new Person('John', 30);
john.greet();
对象是 JavaScript 编程的核心概念,理解对象对于掌握 JavaScript 至关重要。