国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript中的對象的extensible屬性介紹

2019-11-20 13:33:34
字體:
來源:轉載
供稿:網友

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(),其作用范圍均為對象自身,對象的原型對象將不受影響。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 叙永县| 天津市| 唐河县| 明星| 安庆市| 佳木斯市| 昌吉市| 崇信县| 井冈山市| 石景山区| 临猗县| 金坛市| 大同县| 拉孜县| 彭泽县| 莫力| 堆龙德庆县| 二连浩特市| 那坡县| 信丰县| 东乡县| 洪泽县| 文昌市| 南溪县| 天全县| 镇沅| 金平| 余庆县| 逊克县| 多伦县| 昆明市| 尉犁县| 武安市| 乳山市| 山西省| 桂林市| 富宁县| 唐山市| 游戏| 长阳| 都匀市|