访问器属性描述符

  • get  无参函数,在属性被读取时工作
  • set   有一个参数的函数,在属性被设置时工作
  • enumerable  可否列举
  • configurable  可否配置
 1 let user = {
 2   name: "John",
 3   surname: "Smith"
 4 };
 5 
 6 Object.defineProperty(user, 'fullName', {
 7   get() {
 8     return `${this.name} ${this.surname}`;
 9   },
10 
11   set(value) {
12     [this.name, this.surname] = value.split(" ");
13   }
14 });
15 
16 alert(user.fullName); // John Smith
17 
18 for(let key in user) alert(key); // name, surname

 user对象新增了一个属性fullName

正是通过设置属性特性(Object.defineProperty)的方式来添加属性的。

user.fullName="Alice Cooper";

把值赋值给fullName,set函数会站出来,说:我来负责这件事,请把值交给我!

=右边的值作为函数“setter”的参数,飞入了函数之中,函数进行一系列处理后会出现一些结果。

原文地址:https://www.cnblogs.com/flyover/p/14157652.html