最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

object.defineproperty()

來源:懂視網(wǎng) 責編:李贏贏 時間:2021-12-22 10:54:38
文檔

object.defineproperty()

一、定義:Object.defineProperty()會直接在一個對象上定義一個新屬性,或者修改一個對象的現(xiàn)有屬性,并返回此對象;二、和.操作符或者[]操作符的區(qū)別;三、接受3個參數(shù);四、屬性類型:1、數(shù)據(jù)屬性,2、訪問器屬性;五、數(shù)據(jù)屬性和訪問器屬性相互轉(zhuǎn)換。
推薦度:
導讀一、定義:Object.defineProperty()會直接在一個對象上定義一個新屬性,或者修改一個對象的現(xiàn)有屬性,并返回此對象;二、和.操作符或者[]操作符的區(qū)別;三、接受3個參數(shù);四、屬性類型:1、數(shù)據(jù)屬性,2、訪問器屬性;五、數(shù)據(jù)屬性和訪問器屬性相互轉(zhuǎn)換。

object.defineproperty()是什么呢?不知道的小伙伴來看看小編今天的分享吧!

一、Object.defineProperty()的定義:

Object.defineProperty()會直接在一個對象上定義一個新屬性,或者修改一個對象的現(xiàn)有屬性,并返回此對象。

二、和.操作符或者[]操作符的區(qū)別:

Object.defineProperty()能夠更深入地定義一個對象,它操作的不僅僅是屬性的值,也可以修改屬性的一些特性,比如是否可修改,是否可遍歷,當然值也是屬性其中的特性之一。

三、Object.defineProperty(obj, prop, descriptor)接受3個參數(shù):

obj: 要操作的對象

prop: 要操作的屬性

descriptor: 描述符對象。包含6個屬性:configurable、enumerable、writable、value、get、set

注意:

應當直接在Object構(gòu)造器對象上調(diào)用此方法,而不是在任意一個Object類型的實例上調(diào)用。

四、屬性類型:

1、數(shù)據(jù)屬性

數(shù)據(jù)屬性包含一個數(shù)據(jù)值的位置。在這個位置可以讀取和寫入值

數(shù)據(jù)屬性有4個描述其行為的特性:

configurable: 能否通過delete刪除屬性,能否修改屬性特性(注意是特性),能否修改為訪問器屬性,默認是true

enumerable: 能否通過for-in遍歷到該屬性,默認是true

writable: 能否修改屬性值,默認是true

value: 這個屬性的數(shù)據(jù)值。讀取屬性值的時候,從這里讀??;寫入屬性值得時候,把新值保存在這個位置。默認是undefined

例如:

let person = {}

person.name // 給person添加一個數(shù)據(jù)屬性,Configurable、Enumerable、Writable默認是true,Value是undefinedperson.name = 'a' // Value特性被設置為'a'

如果將configurable設置為false 那么除了value和writable之外的特性都不能被修改(本身也不能再改為true了),如果修改會被忽略,嚴格模式會報錯。

在configurable為false的情況下,writable為true可修改為false,如果writable為false,修改為true也會被忽略,嚴格模式報錯。

Object.defineProperty(person, 'name', {  configurable: false})Object.defineProperty(person, 'name', {  value: 'b'})console.log(person.name) // b  configurable為false,writable為true時還能修改Object.defineProperty(person, 'name', {  writable: false})

person.name = 'c' // errorObject.defineProperty(person, 'name', {  writable: true}) // error

2、訪問器屬性

訪問器屬性不包含數(shù)據(jù)值,包含一對getter和setter函數(shù)(不需要同時存在)。
訪問器屬性必須通過Object.defineProperty定義。訪問器屬性有以下四個特性:

configurable: 能否通過delete刪除屬性,能否修改屬性特性(注意是特性),能否修改為數(shù)據(jù)屬性,默認是true

enumerable: 能否通過for-in遍歷到該屬性,默認是true

get: 在讀取屬性時調(diào)用的函數(shù)。默認值是undefined

set: 在寫入屬性時調(diào)用的函數(shù)。默認是undefined

五、數(shù)據(jù)屬性和訪問器屬性相互轉(zhuǎn)換:

數(shù)據(jù)屬性 -> 訪問器屬性

給數(shù)據(jù)屬性設置了get或set特性,value和writable特性就會被廢棄,該屬性變?yōu)樵L問器屬性

訪問器屬性 -> 數(shù)據(jù)屬性

給訪問器屬性設置了value或writable特性,get和set特性就會被廢棄,該屬性變?yōu)閿?shù)據(jù)屬性

注意:只有在configurable為true的情況下才可以相互轉(zhuǎn)換,即使數(shù)據(jù)屬性中在configurable為false的情況可以修改value或writable,訪問器屬性轉(zhuǎn)數(shù)據(jù)屬性只設置value或writable也不行。

以上就是小編今天的分享了,希望可以幫助到大家。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

object.defineproperty()

一、定義:Object.defineProperty()會直接在一個對象上定義一個新屬性,或者修改一個對象的現(xiàn)有屬性,并返回此對象;二、和.操作符或者[]操作符的區(qū)別;三、接受3個參數(shù);四、屬性類型:1、數(shù)據(jù)屬性,2、訪問器屬性;五、數(shù)據(jù)屬性和訪問器屬性相互轉(zhuǎn)換。
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top