- 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”的参数,飞入了函数之中,函数进行一系列处理后会出现一些结果。