返回值:返回傳入函數的對象,即第一個參數objjavascript
對象裏目前存在的屬性描述符有兩種主要形式:數據描述符和存取描述符。java
數據描述符和存取描述符均具備如下可選鍵值:函數
configurable:當且僅當該屬性的 configurable 爲 true 時,該屬性描述符纔可以被改變,也可以被刪除。默認爲 false。(爲false時不能設置value,writable,configurable)ui
enumerable:當且僅當該屬性的 enumerable 爲 true 時,該屬性纔可以出如今對象的枚舉屬性中。默認爲 false。(是否能在for...in循環中遍歷出來或在Object.keys中列舉出來)spa
數據描述符是一個擁有可寫或不可寫值的屬性。設計
writable:當且僅當該屬性的 writable 爲 true 時,該屬性才能被賦值運算符改變。默認爲 false。code
value:該屬性對應的值。能夠是任何有效的 JavaScript 值(數值,對象,函數等)。默認爲 undefined。對象
存取描述符是由一對 getter-setterip
set:一個給屬性提供 setter 的方法,若是沒有 setter 則爲 undefined。該方法將接受惟一參數,並將該參數的新值分配給該屬性。默認爲 undefined。get
get:一個給屬性提供 getter 的方法,若是沒有 getter 則爲 undefined。該方法返回值被用做屬性值。默認爲 undefined。
set和get
var person = {};
var name = '';// 初始化一個空值
Object.defineProperty(person, 'personName', {
set: function (value) {
console.log(value);// JavaScript高級程序設計
name = value;
},
get: function () {
return '《' + name + '》';// personName的值爲return的值
}
});
//person.personName的賦值和取值會觸發set 和 get函數
// 賦值時調用set方法
person.personName = 'JavaScript高級程序設計';
// 取值時調用get方法
console.log(person.personName);// 《JavaScript高級程序設計》,若沒有給person.personName賦值,則打印結果爲《》
複製代碼