生活随笔
收集整理的這篇文章主要介紹了
JavaScript | 数据属性与访问器属性
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
屬性類型
數據屬性 - 包含一個數據值的位置,可以讀取和寫入值
| [writable] | 是否能修改屬性的值 | true |
| [enumerable] | 是否通過for in 循環(huán)返回屬性(是否可以被枚舉) | true |
| [configurable] | 是否能通過delete刪除,能否修改屬性的特性,能否修改訪問器屬性 | true |
| [value] | 包含這個屬性的數據值,讀取屬性值的時候從這個位置讀取。 | undefined |
訪問器屬性
| [enumerable] | 是否通過for in 循環(huán)返回屬性(是否可以被枚舉) | true |
| [configurable] | 是否能通過delete刪除,能否修改屬性的特性,能否修改訪問器屬性 | true |
| [get] | 讀取屬性時調用的函數 | undefined |
| [set] | 寫入屬性時調用的函數 | undefined |
屬性操作
- 定義屬性:Object.defineProperty()
- 查看屬性:Object.getOwnPropertyDescriptor()
"use strict"
;
// *****************************************************************
// 操作數據屬性
var person =
{name: 'hugh'
,age: 29
,sayName: function() { console.log(1
); }
}
// 修改屬性默認特性:Object.defineProperty()
Object.defineProperty(person, "name"
, {writable: true,value: 'dong'
,configurable: false,enumerable: false
});
console.log(person);// *****************************************************************
// 操作訪問器屬性
var book =
{_year: 2004,
// _作為標記只能通過對象訪問的屬性edition: 0
};
Object.defineProperty(book, "year"
, {// 訪問器屬性year包含setter和getter函數get:
function() {return this._year;},set: function(newValue) {this._year =
newValue;this.edition = newValue - 2004
;}
})
book.year = 2008
;
console.log(book);
console.log(book.edition);
// 舊方法,ie8部分不支持defineProperty()
// 嚴格模式不可用
// book._defineGetter_("year",function(){
// return this._year;
// });
// book._defineSetter_("year",function(newValue){
// this._year = newValue;
// this.edition = newValue - 2014;
// });// *****************************************************************
// 定義多個屬性
var book2 =
{};
Object.defineProperties(book2, {// 數據屬性
_year: {value: 2004
,writable: false,enumerable: false,configurable: true},edition: {value: 0
,writable: false,enumerable: false,configurable: true},// 訪問器屬性
year: {get: function() {return this._year;},set: function(newValue) {this._year =
newValue;this.edition = newValue - 3000
;}}
});
console.log(book2);// *****************************************************************
// 查看屬性的屬性
console.log(Object.getOwnPropertyDescriptor(book2,'_year'
));
console.log(Object.getOwnPropertyDescriptor(book2,'edition'
));
console.log(Object.getOwnPropertyDescriptor(book2,'year'));
轉載于:https://www.cnblogs.com/hughdong/p/7262539.html
總結
以上是生活随笔為你收集整理的JavaScript | 数据属性与访问器属性的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。