Accesor 屬性(獲取和設定)

Version >= 五

將屬性視為兩個函式的組合,一個用於從中獲取值,另一個用於設定其中的值。

屬性描述符的 get 屬性是一個函式,將呼叫該函式從屬性中檢索值。

set 屬性也是一個函式,它將在為屬性賦值時呼叫,新值將作為引數傳遞。

你不能將 valuewritable 分配給具有 getset 的描述符

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"