• <center id="sm46c"></center>
  • <dfn id="sm46c"></dfn>
  • <strike id="sm46c"></strike>
  • <cite id="sm46c"><source id="sm46c"></source></cite>
    • <strike id="sm46c"><source id="sm46c"></source></strike>
      <option id="sm46c"></option>
      国产精品天天看天天狠,女高中生强奷系列在线播放,久久无码免费的a毛片大全,国产日韩综合av在线,亚洲国产中文综合专区在,特殊重囗味sm在线观看无码,中文字幕一区二区三区四区在线,无码任你躁久久久久久老妇蜜桃

      JavaScript 對(duì)象可以做到的三件事

      2020-5-12    seo達(dá)人

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

      JavaScript 對(duì)象無法以常規(guī)方式訪問的內(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ū)ο?

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

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

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

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


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


      屬性 解釋 默認(rèn)值

      [[Configurable]] 能否通過delete刪除屬性從而重新定義屬性;

      能否修改屬性的特性;

      能否把屬性修改為訪問器屬性 true

      [[Enumerable]] 能否通過for-in循環(huán)返回屬性 true

      [[Writable]] 能否修改屬性的值 true

      [[Value]] 包含這個(gè)屬性的數(shù)據(jù)值 undefined

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


      let foo = {

       a: 1

      }

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


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


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


      enumerable 意味著它可以被for ... in循環(huán)遍歷。 默認(rèn)值為true,說明能通過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.無法分配繼承的只讀屬性

      繼承的只讀屬性不能再賦值。這是有道理的,因?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,因此我們無法為其分配其他值。


      如果我們這樣寫:


      foo.a = 2;

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


      總結(jié)

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


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


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


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


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

      日歷

      鏈接

      個(gè)人資料

      存檔

      主站蜘蛛池模板: 成人性能视频在线| 欧美成a网| 亚洲aⅴ无码专区在线观看春色| 无码精品a∨在线观看中文| 吉川爱美一区二区三区视频| 在线 欧美 中文 亚洲 精品| 浴室人妻的情欲hd三级| 兰溪市| 熟妇人妻av无码一区二区三区| 亚洲欧美在线观看一区二区| 南陵县| 亚洲一级色| 五月天久久久噜噜噜久久| 国产亚洲欧美一区二区三区在线播放| 91蜜臀国产自产在线观看| 久久天堂综合亚洲伊人hd| 永靖县| 无码专区 人妻系列 在线| 高清不卡毛片| 你懂的亚洲一区二区三区| 欧美人与禽2o2o性论交| 监利县| 国产久草视频| 亚洲国产综合自在线另类| 国产三级黄色片在线观看| 亚洲国产精品自在在线观看| 国产午夜鲁丝无码拍拍| 97人妻人人揉人人躁人人 | 国产成人AV国语在线观看| 美女把尿囗扒开让男人添| 日本一卡二卡3卡四卡网站精品| 久久久久亚洲Av片无码一区| 久久精品国产99精品国偷| 台前县| 成av免费大片黄在线观看| 亚洲国产美国产综合一区| 齐河县| 日本人一区二区在线观看| 337p日本欧洲亚洲大胆色噜噜| 久久99国产视频| 亚洲熟妇自偷自拍另类|