<address id="ttjl9"></address>

      <noframes id="ttjl9"><address id="ttjl9"><nobr id="ttjl9"></nobr></address>
      <form id="ttjl9"></form>
        <em id="ttjl9"><span id="ttjl9"></span></em>
        <address id="ttjl9"></address>

          <noframes id="ttjl9"><form id="ttjl9"></form>

          屬性描述符與Proxy的區別&Vue3.0為何改用Proxy

          2020-4-21    前端達人

          屬性描述符

          什么是屬性描述符?

          屬性描述符就是一個屬性除了屬性名與屬性值之外的其他相關信息

          通過Object.getOwnPropertyDescriptor(對象, 屬性名)可以得到一個對象的某個屬性的屬性描述符

          let obj = {
              a: 1
          }
          console.log(Object.getOwnPropertyDescriptor(obj, 'a'));
          // {
          //     value: 1,
          //     writable: true,
          //     enumerable: true,
          //     configurable: true
          // }
          

          通過Object.getOwnPropertyDescriptors(對象)可以得到某個對象的所有屬性描述符

          let obj = {
              a: 1,
              b: 2
          }
          console.log(Object.getOwnPropertyDescriptors(obj));
          // {
          //     a: {
          //         value: 1, 
          //         writable: true,
          //         enumerable: true,
          //         configurable: true
          //     }
          //     b: {
          //         value: 2, 
          //         writable: true, 
          //         enumerable: true, 
          //         configurable: true
          //     }
          // }
          


          接下來,說一說每一個屬性描述符的作用

          value-屬性值

          不多逼逼

          configurable-屬性描述符是否可被修改

          當我們設置configurable為false以后,再去修改屬性描述符的話,會報錯


          let obj = {
              a: 1,
              b: 2
          }
          Object.defineProperty(obj, 'a', {
              value: 'a',
              configurable: false
          })
          Object.defineProperty(obj, 'a', {
              value: 'a',
              configurable: true
          })
          // Uncaught TypeError: Cannot redefine property: a
          //    at Function.defineProperty (<anonymous>)
          



          enumerable-該屬性是否可被枚舉

          當設置一個屬性的enumerable為false時,該屬性不可被forin循環
          但是不影響forof循環,因為forof循環看有沒有Symbol(Symbol.iterator)
          forin循環的是屬性名,forof循環的是屬性值


          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.syprn.cn

          存檔

          亚洲va欧美va天堂v国产综合