返回
JS 口袋书 · 对象生命周期揭秘,原来一切皆对象是这么回事
前端
2023-12-22 12:30:23
在JS中,“一切皆对象”是一个非常重要的概念,它意味着任何数据都可以用对象来表示。这使得JS成为一门非常灵活的语言,能够轻松处理各种数据类型。
JS对象的生命周期
JS对象的生命周期分为三个阶段:创建、使用和销毁。
- 创建 :JS对象可以通过多种方式创建,最常见的是使用
new
运算符。new
运算符可以创建一个新的对象,并将其分配给一个变量。例如:
const person = new Object();
- 使用 :一旦对象被创建,就可以使用它来存储和检索数据。可以使用点运算符(
.
)来访问对象的属性,可以使用方括号([]
)来访问对象的元素。例如:
person.name = "John Doe";
person["age"] = 30;
- 销毁 :当对象不再需要时,可以通过将其分配给
null
来销毁它。例如:
person = null;
JS对象的操作
JS对象可以通过多种方式进行操作,最常见的是使用属性和方法。
- 属性 :属性是对象的键值对,用于存储数据。属性可以通过点运算符(
.
)来访问和修改。例如:
person.name = "John Doe";
console.log(person.name); // "John Doe"
- 方法 :方法是对象的函数,用于对对象进行操作。方法可以通过点运算符(
.
)后跟括号来调用。例如:
person.greet();
JS对象的原型
每个JS对象都有一个原型,原型是一个特殊的对象,它包含了对象共有的一些属性和方法。原型可以通过Object.getPrototypeOf()
方法来访问。例如:
const personPrototype = Object.getPrototypeOf(person);
console.log(personPrototype.constructor); // Object
JS对象的继承
JS对象可以通过继承来获得另一个对象的属性和方法。继承可以通过extends
来实现。例如:
class Employee extends Person {
constructor(name, age, jobTitle) {
super(name, age);
this.jobTitle = jobTitle;
}
work() {
console.log("I'm working!");
}
}
JS对象的枚举
JS对象可以通过Object.keys()
方法来枚举其属性。例如:
const keys = Object.keys(person);
console.log(keys); // ["name", "age"]
JS对象的冻结
JS对象可以通过Object.freeze()
方法来冻结,冻结后的对象无法再被修改。例如:
Object.freeze(person);
person.name = "Jane Doe";
console.log(person.name); // "John Doe"
JS对象的代理
JS对象可以通过Proxy
类来创建代理,代理对象可以拦截对对象的访问和修改。例如:
const personProxy = new Proxy(person, {
get: function(target, property) {
console.log("Getting property:", property);
return target[property];
},
set: function(target, property, value) {
console.log("Setting property:", property, "to", value);
target[property] = value;
}
});
personProxy.name = "Jane Doe";
console.log(personProxy.name); // "Getting property: name"
// "Setting property: name to Jane Doe"
// "Jane Doe"