JavaScript中的對象的extensible屬性介紹,javascript對象

來源:互聯網
上載者:User

JavaScript中的對象的extensible屬性介紹,javascript對象

JavaScript中,對象的extensible屬性用於表示是否允許在對象中動態添加新的property。ECMAScript 3標準中,所有的對象都是extensible的。ECMAScript 5標準中,所有的對象預設仍是extensible的,但可以通過設定來改變這一屬性。

查詢一個對象是否是extensible的,可以使用Object.isExtensible()語句:


複製代碼 代碼如下:
var o = {x:1};
console.log(Object.isExtensible(o));//true


使一個對象變成不是extensible的,可以使用Object.preventExtensions()語句:


複製代碼 代碼如下:
Object.preventExtensions(o)
console.log(Object.isExtensible(o));//false


值得注意的是,由於沒有Object.preventExtensions()的反動作陳述式,因此一旦某個對象被設定為非extensible後,將沒有辦法重新再將其設定為extensible。

Object.preventExtensions()語句作用的範圍是對象自身,原型對象不受影響。如果某個對象被設定為非extensible,那麼其原型對象中依然可以動態添加property,而這些動態添加的property也依然可以被對象繼承到。

Object.seal()和Object.freeze()

Object.preventExtensions()可以防止在對象中動態添加新的property。除了這個操作,JavaScript中還存在另外兩個更加嚴格的操作來保護對象:Object.seal()和Object.freeze()。

Object.seal()的作用是在Object.preventExtensions()的基礎上,設定所有對象自身property的configurable屬性為false。與Object.preventExtensions()操作一樣,Object.seal()沒有反操作,因此一旦將對象seal了之後將無法恢複其狀態。在JavaScript中,可以通過Object.isSealed()來查詢某個對象是否被seal了。

Object.freeze()的作用是在Object.seal()的基礎上,將所有對象自身的property設定為唯讀。與Object.seal()和Object.preventExtensions()操作一樣,Object.freeze()沒有反操作,因此一旦將對象freeze了之後將無法恢複其狀態。在JavaScript中,可以通過Object.isFrozen()來查詢某個對象是否被freeze了。


複製代碼 代碼如下:
console.log(Object.isSealed(o));//false
Object.seal(o);
console.log(Object.isSealed(o));//true
console.log(Object.isFrozen(o));//false
Object.freeze(o);
console.log(Object.isFrozen(o));//true


無論是Object.preventExtensions(),還是Object.seal()和Object.freeze(),其作用範圍均為對象自身,對象的原型對象將不受影響。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.