Accesor 属性(获取和设置)
Version >= 五
将属性视为两个函数的组合,一个用于从中获取值,另一个用于设置其中的值。
属性描述符的 get
属性是一个函数,将调用该函数从属性中检索值。
set
属性也是一个函数,它将在为属性赋值时调用,新值将作为参数传递。
你不能将 value
或 writable
分配给具有 get
或 set
的描述符
var person = { name: "John", surname: "Doe"};
Object.defineProperty(person, 'fullName', {
get: function () {
return this.name + " " + this.surname;
},
set: function (value) {
[this.name, this.surname] = value.split(" ");
}
});
console.log(person.fullName); // -> "John Doe"
person.surname = "Hill";
console.log(person.fullName); // -> "John Hill"
person.fullName = "Mary Jones";
console.log(person.name) // -> "Mary"