JS屬性描述符

來源:互聯網
上載者:User

標籤:console   特性   als   ons   logs   div   efi   conf   value   

var myObject = {            a:2        };        Object.getOwnpropertyDescriptor(myObject,"a");        {            value:2,            writable:true,            emumerable:true,            configurable:true        }

這段代碼中的屬性描述符不僅只有2,還有writable(可寫)、enumerable(可枚舉)、configurable(可配置)三種

 

在建立普通屬性時屬性描述符會使用預設值,我們也可以使用 Object.defineProperty(...)添加一個新屬性或者修改一個已有屬性(如果是configurable)並對特性進行設定

程式碼範例:

var myObject = {};        Object.defineProperty(myObject,"a",{            value:2,            writable:true,            configurable:true,            emumerable:true        });        console.log(myObject.a);//2

 

下面是對這三個屬性描述符的介紹:

1)writable:決定是否可以修改屬性的值

var myObject = {};        Object.defineProperty(myObject,"a",{            value:2,            writable:false,            configurable:true,            emumerable:true        });        myObject.a = 3;        console.log(myObject.a);//2

解析:writable:false 可以看作為屬性不可改變,在strict 模式("use strict";)下,引擎會拋出TypeError的異常,這表示我們無法修改一個不可寫的屬性

 

2)configurable:只要屬性是可配置的,就可以使用 defineProperty(...)方法來修改屬性描述符

注意!!

a)在false情況下,如果修改,不管是不是strict 模式,都會拋出TypeError的錯誤

b)在這種情況下,我們仍可以將可寫性的狀態由true改為false

c)delete屬性也會被禁止(delete myObject.a;)

 

3)emumerable:可枚舉,如果將它設定為false,則這個屬性將不會出現在枚舉中,但可以正常訪問他

 

  

  

 

 

 

 

JS屬性描述符

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.