文章目录
- 01什么是对象
- 02创建对象的方法
- 2.1. 对象字面量 也是最常用的方法:
- 2.2. 构造函数
- 2.3. 对象构造函数(自定义)
- 2.4. Object.create 方法
- 03访问对象的属性
- 3.1. 点
- 3.2. 方括号操作符
- 04. 添加/修改属性
- 05. 删除属性
- 06. 遍历对象属性
- 6.1. for...in 循环
- 6.2. Object.keys()
- 6.3. Object.values()
- 6.4. Object.entries()
- 7. 对象的常见操作
- 7.1. 合并对象
- 7.2. 判断对象是否有某属性
- 8. 对象的方法
- 9. 对象与引用
- 10. 原型与继承
- 10.1. __proto__ 和 prototype
- 10.2. 继承属性
- 11. 总结
01什么是对象
在 JavaScript 中,对象是一复杂数据类型, 前面讲的数值字符串这些属于简单数据类型,用于存储键值对(key-value pairs)。
对象(Object) 是一种可以存储多个值的容器,每个值以键(key)为标识。键是字符串(或符号),值可以是任何数据类型 , 数值 , 字符串 , 函数等等 .
02创建对象的方法
2.1. 对象字面量 也是最常用的方法:
let person = {
name: "John", // 键 "name",值 "John"
age: 30, // 键 "age",值 30
greet: function() { // 键 "greet",值是一个函数
console.log("Hello!");
}
};
注意
使用 = 赋值:在 let person 后面使用 = 来赋值一个对象。
属性间使用逗号分隔:对象的属性之间应该使用逗号 , 来分隔。
定义函数的时候 , 不要忘记()
如何调用对象呢 ?[跳转](# 03访问对象的属性)
2.2. 构造函数
使用 new Object():语法是定死的
let person = new Object();
person.name = "John";
person.age = 30;
2.3. 对象构造函数(自定义)
function Person(name, age) {
this.name = name;
this.age = age;
}
let john = new Person("John", 30);
2.4. Object.create 方法
let person = Object.create(null); // 创建一个没有原型的空对象
03访问对象的属性
3.1. 点
console.log(person.name); // 访问 "name" 属性,输出 "John"
3.2. 方括号操作符
console.log(person["age"]); // 访问 "age" 属性,输出 30
使用场景:如果属性名称包含空格或特殊字符,或需要动态访问属性时,方括号是必要的。
04. 添加/修改属性
person.job = "Developer"; // 添加新属性
person.age = 35; // 修改已有属性
05. 删除属性
delete person.age; // 删除 "age" 属性
console.log(person.age); // undefined
06. 遍历对象属性
6.1. for…in 循环
遍历对象的所有可枚举属性:
for (let key in person) {
console.log(key + ": " + person[key]);
}
6.2. Object.keys()
获取对象所有属性的键:
console.log(Object.keys(person)); // ["name", "job", "greet"]
6.3. Object.values()
获取对象所有属性的值:
console.log(Object.values(person)); // ["John", "Developer", function]
6.4. Object.entries()
获取对象的键值对数组:
console.log(Object.entries(person));
// [["name", "John"], ["job", "Developer"], ["greet", function]]
7. 对象的常见操作
7.1. 合并对象
使用 Object.assign:
let target = { a: 1 };
let source = { b: 2, c: 3 };
Object.assign(target, source);
console.log(target); // { a: 1, b: 2, c: 3 }
使用扩展运算符 …:
let merged = { ...target, ...source };
console.log(merged); // { a: 1, b: 2, c: 3 }
7.2. 判断对象是否有某属性
使用 in 操作符:
console.log("name" in person); // true
使用 hasOwnProperty:
console.log(person.hasOwnProperty("name")); // true
8. 对象的方法
对象可以包含方法,即存储在对象中的函数:
let calculator = {
add: function(a, b) {
return a + b;
},
subtract(a, b) {
return a - b; // 简写方式
}
};
console.log(calculator.add(5, 3)); // 8
console.log(calculator.subtract(5, 3)); // 2
9. 对象与引用
对象是引用类型,这意味着两个变量可能引用同一个对象:
let obj1 = { name: "Alice" };
let obj2 = obj1;
obj2.name = "Bob";
console.log(obj1.name); // 输出 "Bob"
10. 原型与继承
JavaScript 对象具有原型链,支持继承。
10.1. proto 和 prototype
每个对象都有一个隐藏属性 proto,指向它的原型对象。
let obj = {};
console.log(obj.__proto__ === Object.prototype); // true
10.2. 继承属性
对象可以从其原型链中继承属性:
let parent = { greet: "Hello" };
let child = Object.create(parent);
console.log(child.greet); // 输出 "Hello"
11. 总结
支持键值对存储,具备动态属性管理、方法定义、继承等特性。