6.1 创建对象
对象 是 JavaScript 中的基本数据类型之一,广泛用于存储和管理数据。 对象是一个 属性的集合,其中每个属性由键(名称)和值组成。在这节课中,我们将探讨对象的创建,以及如何访问它们的属性和方法。
1. 对象字面量
在 JavaScript 中最常见的创建对象的方法是使用对象字面量。
在这个例子中,我们创建了一个对象 person
,它有四个属性:name
、age
、isStudent
和 greet
。
let person = {
name: 'John',
age: 30,
isStudent: false,
greet: function() {
return 'Hello!';
}
};
2. Object 构造函数
对象也可以使用 Object()
构造函数创建。
这种方法等效于使用对象字面量创建对象,但更为冗长:
let person = new Object();
person.name = 'John';
person.age = 30;
person.isStudent = false;
person.greet = function() {
return 'Hello!';
};
3. 构造函数
构造函数允许创建具有相同属性和方法的多个对象实例。
在这个例子中,构造函数 Person()
用于创建对象 john
和 jane
,它们具有相同的属性和方法:
function Person(name, age, isStudent) {
this.name = name;
this.age = age;
this.isStudent = isStudent;
this.greet = function() {
return 'Hello!';
};
}
let john = new Person('John', 30, false);
let jane = new Person('Jane', 25, true);
4. 方法 Object.create()
方法 Object.create()
使用指定的原型和属性创建一个新对象。
在这个例子中,对象 john
是基于原型 personPrototype
创建的:
let personPrototype = {
greet: function() {
return 'Hello!';
}
};
let john = Object.create(personPrototype);
john.name = 'John';
john.age = 30;
john.isStudent = false;
6.2 访问属性和方法
1. 用点访问
访问对象的属性和方法的最常见的方法是通过点语法:
let person = {
name: 'John',
age: 30,
greet: function() {
return 'Hello!';
}
};
console.log(person.name); // 将输出: John
console.log(person.age); // 将输出: 30
console.log(person.greet()); // 将输出: Hello!
2. 用方括号访问
对象的属性也可以通过方括号访问。当属性名存储在变量中或包含空格或特殊字符时,这种方法很有用:
let person = {
'first name': 'John',
age: 30,
greet: function() {
return 'Hello!';
}
};
console.log(person['first name']); // 将输出: John
console.log(person['age']); // 将输出: 30
let propertyName = 'greet';
console.log(person[propertyName]()); // 将输出: Hello!
3. 修改和添加属性
对象的属性可以随时修改或添加:
let person = {
name: 'John',
age: 30
};
// 修改现有属性
person.age = 31;
console.log(person.age); // 将输出: 31
// 添加新属性
person.isStudent = false;
console.log(person.isStudent); // 将输出: false
4. 删除属性
对象的属性可以通过 delete
操作符删除:
let person = {
name: 'John',
age: 30,
isStudent: false
};
delete person.isStudent;
console.log(person.isStudent); // 将输出: undefined
6.3 遍历对象的属性
1. for...in 循环
for...in
循环允许遍历对象的所有可枚举属性:
let person = {
name: 'John',
age: 30,
isStudent: false
};
for (let key in person) {
console.log(`${key}: ${person[key]}`);
}
// 将输出:
// name: John
// age: 30
// isStudent: false
2. 方法 Object.keys()
方法 Object.keys()
返回对象的所有可枚举属性的数组:
let person = {
name: 'John',
age: 30,
isStudent: false
};
let keys = Object.keys(person);
console.log(keys); // 将输出: ['name', 'age', 'isStudent']
3. 方法 Object.values()
方法 Object.values()
返回对象所有可枚举属性的值的数组:
let person = {
name: 'John',
age: 30,
isStudent: false
};
let values = Object.values(person);
console.log(values); // 将输出: ['John', 30, false]
4. 方法 Object.entries()
方法 Object.entries()
返回对象所有可枚举属性的 [键, 值] 对的数组:
let person = {
name: 'John',
age: 30,
isStudent: false
};
let entries = Object.entries(person);
console.log(entries); // 将输出: [['name', 'John'], ['age', 30], ['isStudent', false]]
6.4 检查属性是否存在
1. 操作符 in
操作符 in
用于检查对象中是否存在某个属性:
let person = {
name: 'John',
age: 30
};
console.log('name' in person); // 将输出: true
console.log('isStudent' in person); // 将输出: false
2. 方法 hasOwnProperty()
方法 hasOwnProperty()
检查对象是否具有指定的属性作为其自身的(不是继承的):
let person = {
name: 'John',
age: 30
};
console.log(person.hasOwnProperty('name')); // 将输出: true
console.log(person.hasOwnProperty('isStudent')); // 将输出: false
GO TO FULL VERSION