摘要:在寫入訪問器屬性是,會(huì)調(diào)用函數(shù)并傳入新值,這個(gè)函數(shù)負(fù)責(zé)決定如何處理數(shù)據(jù)表示能否通過刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問屬性。
1、數(shù)據(jù)屬性
數(shù)據(jù)屬性包含一個(gè)數(shù)據(jù)值的位置。這個(gè)位置可以讀取和寫入值。數(shù)據(jù)屬性有4個(gè)描述其行為的特性。
[ [ Configurable ] ] 表示能否通過delete刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問屬性。默認(rèn)為true
[ [ Enumerable] ] 表示能否通過for-in循環(huán)返回屬性。默認(rèn)為true
[ [ Writable ] ] 表示能否修改屬性的值。默認(rèn)為true
[ [ Value ] ] 包含這個(gè)屬性的屬性值。讀取屬性的時(shí)候,從這個(gè)位置讀取,寫入屬性的時(shí)候,把新值保存在這個(gè)位置。默認(rèn)為undefined
eg:
var p = {}; Object.defineProperty(p, "name", { writable: false, value: "nihao" })
2、訪問器屬性
訪問器屬性不包含數(shù)據(jù)值,他們包含一對(duì)兒getter和setter函數(shù)(不過,這兩個(gè)函數(shù)都不是必須的)在讀取訪問器屬性的時(shí)候會(huì)調(diào)用getter函數(shù),這個(gè)函數(shù)負(fù)責(zé)返回有效的值。在寫入訪問器屬性是,會(huì)調(diào)用setter函數(shù)并傳入新值,這個(gè)函數(shù)負(fù)責(zé)決定如何處理數(shù)據(jù)
[ [ Configurable ] ] 表示能否通過delete刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問屬性。默認(rèn)為true
[ [ Enumerable] ] 表示能否通過for-in循環(huán)返回屬性。默認(rèn)為true
[ [ Get ] ] 在讀取屬性時(shí)調(diào)用的函數(shù),默認(rèn)為undefined
[ [ Set ] ] 在寫入屬性時(shí)調(diào)用的函數(shù),默認(rèn)為undefined
eg:
var p = {get: 0}; Object.defineProperty(p, "name", { get: function (){ console.log("get"); return this.get; }, set: function (newVal) { console.log("set"); this.get = newVal; } })
3、讀取屬性的特性
Object.getOwnPropertyDescriptor(屬性所在的對(duì)象, 屬性名稱);
返回值是一個(gè)對(duì)象,訪問屬性configurable 、enumerable、get、set四個(gè)屬性,
如果是數(shù)值屬性,返回的對(duì)象屬性有configurable 、enumerable、writable、value四個(gè)屬性
備注:
Object.defineProperties()函數(shù)可以定義多個(gè)屬性
eg:
var p = {get: 0}; Object.defineProperties(p, {"name", { get: function (){ console.log("get"); return this.get; }, set: function (newVal) { console.log("set"); this.get = newVal; } }, "age": { writable: true, value: 11 } })
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/96197.html
摘要:字面形式允許你在不需要使用操作符和構(gòu)造函數(shù)顯式創(chuàng)建對(duì)象的情況下生成引用值。操作符以一個(gè)對(duì)象和一個(gè)構(gòu)造函數(shù)作為參數(shù)鑒別數(shù)組有前一小結(jié)可以知道鑒別數(shù)組類型可以使用。屬性是函數(shù)獨(dú)有的,表明該對(duì)象可以被執(zhí)行。這種函數(shù)被稱為匿名函數(shù)。 引子: 1.JavaScript 中的變量類型和類型檢測(cè) 1.1原始類型 1.2引用類型 1.3內(nèi)建類型的實(shí)例化 1.4函數(shù)的字面形式 1.5正則表達(dá)式的字...
摘要:對(duì)象重新認(rèn)識(shí)面向?qū)ο竺嫦驅(qū)ο髲脑O(shè)計(jì)模式上看,對(duì)象是計(jì)算機(jī)抽象現(xiàn)實(shí)世界的一種方式。除了字面式聲明方式之外,允許通過構(gòu)造器創(chuàng)建對(duì)象。每個(gè)構(gòu)造器實(shí)際上是一個(gè)函數(shù)對(duì)象該函數(shù)對(duì)象含有一個(gè)屬性用于實(shí)現(xiàn)基于原型的繼承和共享屬性。 title: JS對(duì)象(1)重新認(rèn)識(shí)面向?qū)ο? date: 2016-10-05 tags: JavaScript 0x00 面向?qū)ο?從設(shè)計(jì)模式上看,對(duì)象是...
摘要:工廠模式優(yōu)點(diǎn)集中實(shí)例化,可以傳參等缺點(diǎn)分不清屬于哪個(gè)對(duì)象我們先來談?wù)剝?yōu)點(diǎn),看例子集中實(shí)例化返回實(shí)例化對(duì)象返回返回不難看出,工廠模式比上面的例子減少了很多代碼。 ECMAscript開發(fā)的兩種模式:1.過程化 2.OOP(面向?qū)ο? 面向?qū)ο蟮恼Z言有一個(gè)標(biāo)志,那就是類的概念,而通過類可以創(chuàng)建任意多個(gè)具有相同屬性的方法的對(duì)象。但是ECMAscript中沒有類的概念! 又談作用域 首先...
摘要:年,以為藍(lán)本的建議被提交給了歐洲計(jì)算機(jī)制造商協(xié)會(huì),。而且給未經(jīng)聲明的變量賦值在嚴(yán)格模式下會(huì)導(dǎo)致拋出的錯(cuò)誤。這也正是使用操作符檢測(cè)值時(shí)會(huì)返回的原因。函數(shù)檢查過程是。但是這個(gè)轉(zhuǎn)換過程會(huì)導(dǎo)致特殊的和值應(yīng)用位操作時(shí),這兩個(gè)值會(huì)被當(dāng)成來處理。 前言 本文是 Awesome JavaScript 系列文章的第一篇,本系列文章主要為 JavaScript 的一些常見知識(shí)點(diǎn),是我在 JavaScrip...
閱讀 3134·2021-11-19 09:40
閱讀 2432·2021-10-14 09:42
閱讀 1703·2021-09-22 15:34
閱讀 1443·2019-08-30 15:55
閱讀 776·2019-08-29 12:59
閱讀 413·2019-08-28 18:28
閱讀 1820·2019-08-26 13:42
閱讀 1521·2019-08-26 13:29