中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

JavaScript對(duì)象可以做到的三件事分別是什么

本篇文章為大家展示了JavaScript對(duì)象可以做到的三件事分別是什么,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

10年積累的成都網(wǎng)站建設(shè)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有東山免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

除了普通的對(duì)象屬性賦值和遍歷之外,我們還可以使用 JavaScript  對(duì)象執(zhí)行許多其他操作。

1. 訪問(wèn)內(nèi)部屬性

JavaScript 對(duì)象無(wú)法以常規(guī)方式訪問(wèn)的「內(nèi)部屬性」?!竷?nèi)部屬性」名由雙方括號(hào)[[]]包圍,在創(chuàng)建對(duì)象時(shí)可用。

  • 「內(nèi)部屬性」不能動(dòng)態(tài)地添加到現(xiàn)有對(duì)象。

  • 「內(nèi)部屬性」可以在某些內(nèi)置 JavaScript 對(duì)象中使用,它們存儲(chǔ)ECMAScript規(guī)范指定的內(nèi)部狀態(tài)。

有兩種「內(nèi)部屬性」,一種操作對(duì)象的方法,另一種是存儲(chǔ)數(shù)據(jù)的方法。例如:

  • [[Prototype]] — 對(duì)象的原型,可以為null或?qū)ο?/p>

  • [[Extensible]] — 表示是否允許在對(duì)象中動(dòng)態(tài)添加新的屬性

  • [[PrivateFieldValues]] — 用于管理私有類字段

2. 屬性描述符對(duì)象

數(shù)據(jù)屬性包含了一個(gè)數(shù)據(jù)值的位置,在這個(gè)位置可以讀取和寫入值。也就是說(shuō),數(shù)據(jù)屬性可以通過(guò) 對(duì)象.屬性  訪問(wèn),就是我么平常接觸的用戶賦什么值,它們就返回什么,不會(huì)做額外的事情。

數(shù)據(jù)屬性有4個(gè)描述其行為的特性(為了表示內(nèi)部值,把屬性放在兩對(duì)方括號(hào)中),稱為「描述符對(duì)象」。

JavaScript對(duì)象可以做到的三件事分別是什么

value 描述符是屬性的數(shù)據(jù)值,例如,我們有以下對(duì)象 :

let foo = {   a: 1 }

那么,a 的value屬性描述符為1。

writable是指該屬性的值是否可以更改。默認(rèn)值為true,表示屬性是可寫的。但是,我們可以通過(guò)多種方式將其設(shè)置為不可寫。

configurable 的意思是可以刪除對(duì)象的屬性還是可以更改其屬性描述符。默認(rèn)值為true,這意味著它是可配置的。

enumerable 意味著它可以被for ... in循環(huán)遍歷。默認(rèn)值為true,說(shuō)明能通過(guò)for-in循環(huán)返回屬性

將屬性鍵添加到返回的數(shù)組之前,Object.keys方法還檢查enumerable  描述符。但是,Reflect.ownKeys方法不會(huì)檢查此屬性描述符,而是返回所有自己的屬性鍵。

Prototype描述符有其他方法,get和set分別用于獲取和設(shè)置值。

在創(chuàng)建新對(duì)象, 我們可以使用Object.defineProperty方法設(shè)置的描述符,如下所示:

let foo = {   a: 1 } Object.defineProperty(foo, 'b', {   value: 2,   writable: true,   enumerable: true,   configurable: true, });

這樣得到foo的新值是{a: 1, b: 2}。

我們還可以使用defineProperty更改現(xiàn)有屬性的描述符。例如:

let foo = {   a: 1 } Object.defineProperty(foo, 'a', {   value: 2,   writable: false,   enumerable: true,   configurable: true, });

這樣當(dāng)我們嘗試給 foo.a 賦值時(shí),如:

foo.a = 2;

如果關(guān)閉了嚴(yán)格模式,瀏覽器將忽略,否則將拋出一個(gè)錯(cuò)誤,因?yàn)槲覀儗?writable 設(shè)置為 false, 表示該屬性不可寫。

我們還可以使用defineProperty將屬性轉(zhuǎn)換為getter,如下所示:

'use strict' let foo = {   a: 1 }  Object.defineProperty(foo, 'b', {   get() {     return 1;   } })

當(dāng)我們這樣寫的時(shí)候:

foo.b = 2;

因?yàn)閎屬性是getter屬性,所以當(dāng)使用嚴(yán)格模式時(shí),我們會(huì)得到一個(gè)錯(cuò)誤:Getter 屬性不能重新賦值。

3. 無(wú)法分配繼承的只讀屬性

繼承的只讀屬性不能再賦值。這是有道理的,因?yàn)槲覀冞@樣設(shè)置它,它是繼承的,所以它應(yīng)該傳播到繼承屬性的對(duì)象。

我們可以使用Object.create創(chuàng)建一個(gè)從原型對(duì)象繼承屬性的對(duì)象,如下所示:

const proto = Object.defineProperties({}, {   a: {     value: 1,     writable: false   } })  const foo = Object.create(proto)

在上面的代碼中,我們將proto.a的 writable 描述符設(shè)置為false,因此我們無(wú)法為其分配其他值。

如果我們這樣寫:

foo.a = 2;

在嚴(yán)格模式下,我們會(huì)收到錯(cuò)誤消息。

我們可以用 JavaScript 對(duì)象做很多我們可能不知道的事情。

首先,某些 JavaScript 對(duì)象(例如內(nèi)置瀏覽器對(duì)象)具有內(nèi)部屬性,這些屬性由雙方括號(hào)包圍,它們具有內(nèi)部狀態(tài),對(duì)象創(chuàng)建無(wú)法動(dòng)態(tài)添加。

JavaScript對(duì)象屬性還具有屬性描述符,該屬性描述符使我們可以控制其值以及可以設(shè)置它們的值,還是可以更改其屬性描述符等。

我們可以使用defineProperty更改屬性的屬性描述符,它還用于添加新屬性及其屬性描述符。

最后,繼承的只讀屬性保持只讀狀態(tài),這是有道理的,因?yàn)樗菑母冈蛯?duì)象繼承而來(lái)的。

上述內(nèi)容就是JavaScript對(duì)象可以做到的三件事分別是什么,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁(yè)標(biāo)題:JavaScript對(duì)象可以做到的三件事分別是什么
分享地址:http://www.rwnh.cn/article34/jihope.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、自適應(yīng)網(wǎng)站、網(wǎng)站改版移動(dòng)網(wǎng)站建設(shè)、App設(shè)計(jì)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
桓台县| 左云县| 安龙县| 洪泽县| 辉南县| 藁城市| 黄大仙区| 商水县| 合江县| 广水市| 青阳县| 卫辉市| 兴义市| 教育| 海南省| 安庆市| 莎车县| 扎兰屯市| 仁怀市| 尚志市| 卓资县| 新和县| 滨州市| 龙海市| 台州市| 中江县| 杂多县| 武山县| 长丰县| 鹤山市| 岳阳县| 多伦县| 江阴市| 昌乐县| 杭锦后旗| 沿河| 博野县| 潮州市| 民丰县| 侯马市| 闵行区|