DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> JavaScript基礎知識 >> Javascript學習筆記:對象的屬性類型
Javascript學習筆記:對象的屬性類型
編輯:JavaScript基礎知識     

在ECMAScript中有兩種屬性:數據屬性和訪問器屬性

1、數據屬性

configurable:表示能否通過delete刪除屬性從而重新定義屬性;或者能否修改屬性的特性;或者能否把屬性修改為訪問器屬性。

enumerable:表示能否通過for-in循環返回屬性。

writable:表示能否修改屬性的值。

value:包含這個屬性的數據值,讀取屬性的時候,從這個位置讀;寫入屬性的時候,把新的值保存在這個位置。

2、訪問器屬性

configurable:表示能否通過delete刪除屬性從而重新定義屬性;或者能否修改屬性的特性;或者能否把屬性修改為訪問器屬性。

enumerable:表示能否通過for-in 循環返回屬性。

get:在讀取屬性的時候調用的函數。

set:在設置屬性的時候調用的函數。

①對於直接在對象上定義的屬性,configurable、enumerable、writable的默認值為true:

var person={};
person.name="張三";
console.log(Object.getOwnPeopertyDescriptor(person,'name')) //Object {value: "張三", writable: true, enumerable: true, configurable: true}

②對於通過Object.defineProperty()或者Object.defineProperties()定義的屬性,configurable、enumerable、writable的默認值為false:

var person={};
Object.defineProperty(person,'name',{value:'張三'});
console.log(Object.getOwnPropertyDescriptor(person,'name'));//Object {value: "張三", writable: false, enumerable: false, configurable: false}

③當configurable設置為false時,所有的屬性就不能重新設定,也不能刪除了。但是當configurable設置為false時,writable設置為true時,value屬性的值是可以被直接更改的,但是當writable再次設置為false時,writable屬性就不能重新設置回true了。

var b={};
Object.defineProperty(b,'b',{configurable:false,writable:true});
Object.getOwnPropertyDescriptor(b,'b')//Object {value: undefined, writable: true, enumerable: false, configurable: false}
Object.defineProperty(b,'b',{writable:false})
Object.getOwnPropertyDescriptor(b,'b')//Object {value: undefined, writable: false, enumerable: false, configurable: false}
Object.defineProperty(b,'b',{writable:true})//Uncaught TypeError: Cannot redefine property: b(…)

④訪問器屬性不能直接定義,只能通過Object.defineProperty()來定義。

⑤當訪問器屬性只設置了get屬性,那麼該屬性是只讀的;反之,當訪問器屬性只設置了set屬性,那麼該屬性是只寫的。

⑥一次性定義多個屬性,可以用Object.defineProperties()

var person={};
Object.defineProperties(person,{name:{value:'張三',configurable:true},sex:{value:'男',writable:true}});
Object.getOwnPropertyDescriptor(person,'name')//Object {value: "張三", writable: false, enumerable: false, configurable: true}
Object.getOwnPropertyDescriptor(person,'sex')//Object {value: "男", writable: true, enumerable: false, configurable: false}
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved