国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript設置對象的不可拓展

freewolf / 1094人閱讀

摘要:一般來說,默認情況下,對象都是可拓展的,我們可以為其屬性進行增刪改等操作,也可以更改他們原型的指向,如何讓一個對象變得不可拓展呢,我們可以使用提供的幾個方法,來保證鎖定的對象是不可拓展的可以鎖定對象,設置對象的不可拓展,可以阻止為對象添加新

一般來說,默認情況下,對象都是可拓展的,我們可以為其屬性進行增刪改等操作,也可以更改他們原型的指向,如何讓一個對象變得不可拓展呢,我們可以使用ES5提供的幾個方法,來保證鎖定的對象是不可拓展的

Object.preventExtensions

Object.preventExtensions可以鎖定對象,設置對象的不可拓展,可以阻止為對象添加新的屬性,非嚴格模式下會默默不起作用,但是嚴格模式下會報錯,可以用Object.isExtensible判斷對象是否可拓展

var person = {
  name: "cala"
};

Object.preventExtensions(person);

person.name = "John"; 
person.age = 24;
// 嚴格模式下會報錯: TypeError: Cannot add property age, object is not extensible

console.log(person) 
// {name: "John"}

Object.seal

Object.seal和上面的Object.preventExtensions方法作用是一樣,字面意思是密封,也是用來防止對象被拓展,另外還可以阻止對象已有屬性和方法的刪除,可以用Object.isSealed判斷對象是否可拓展

var person = {
  name: "cala"
};

Object.seal(person);

console.log(Object.isExtensible(person)); // false
console.log(Object.isSealed(person)); // true

delete person.name 
//  刪除屬性失敗 嚴格模式下 Uncaught TypeError: Cannot delete property "name" of #

person.age = 30; // 
// 嚴格模式下會報錯: TypeError: Cannot add property age, object is not extensible

console.log(person) // {name: "cala"}

Object.freeze

作用與上述兩個方法大致相同,字面意思是冰凍,還可以阻止對象的屬性和方法被修改,可以用Object.isFrozen判斷對象是否可拓展

var person = {
  name: "cala"
};

Object.freeze(person);

console.log(Object.isExtensible(person)); // false
console.log(Object.isSealed(person)); // true
console.log(Object.isFrozen(person)); // true

person.name = "xyz"; 
person.age = 30;     
delete person.name  
//上述三個操作,非嚴格模式不起作用,嚴格模式會報錯

console.log(person) // {name: "cala"}

總的來說,上述三個操作方法preventExtensions,seal,freeze可以設置對象的不可拓展性,并且每個方法都針對對象的不可拓展有著不同的限制,另外還有三個判斷方法,isExtensible,isSealed,isFrozen來對對象進行操作,返回Boolean值,來判斷對象是否可拓展

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91405.html

相關文章

  • js知識梳理1:理解對象屬性特性

    摘要:對象直接量的默認值表示能否通過循環返回屬性。同樣密封對象操作是不可逆的。代表未凍結已凍結屬性特性規則總結如果對象是不可拓展的,則可以編輯已有的自有屬性,但不能給它添加新屬性。 寫在前面 注:這個系列是本人對js知識的一些梳理,其中不少內容來自書籍:Javascript高級程序設計第三版和JavaScript權威指南第六版,感謝它們的作者和譯者。有發現什么問題的,歡迎留言指出。 1.數據...

    13651657101 評論0 收藏0
  • 關于ES模塊你必須要知道一些禁忌(一)

    摘要:沒有模塊化的支持,使用開發大型應用將舉步維艱,所以經過大量的實踐,社區制定了一些模塊加載方案,最主要的有運行于瀏覽器的方案和運行于以為代表的服務端的方案。該方法返回被凍結的對象。 背景 ES Module是JavaScript在ES2015版本開始提供的語言標準級別的模塊化方案,在此之前JavaScript一直沒有語言級別的模塊化體系。沒有模塊化的支持,使用JavaScript開發大型...

    yexiaobai 評論0 收藏0
  • js面試題(下)

    摘要:短路運算返回值是什么又稱為短路或,短路如果左側為真,則不再進行右側運算,同時返回左側表達式運算結果。上面是不存在的,所有結果為,轉成就是,那么就會運算,把賦值給的同時,返回值也是,所以打印返回結果是函數內部變量有哪些 DOM元素e的e.getAttribute(propName)和e.propName有什么區別和聯系 e.getAttribute(),是標準DOM操作文檔元素屬性的方...

    zhoutao 評論0 收藏0
  • JavaScript對象遍歷

    摘要:簡單說就是一個有一個函數,這個函數執行的返回值一定是一個對象,對象有兩個屬性標記迭代是否結束,標記這次迭代的結果值。 引言 遍歷對象是平常工作中很常見的一個操作,幾乎是日常操作,但是遍歷對象真的是一件很容易的事情么,顯然不是的。 常用的方式 for...in for (variable in object) {...} 這個是一個很常見的用法,相信每個人順手都可以寫出來。但是這里需要主...

    Seay 評論0 收藏0
  • JavaScript對象詳解

    摘要:屬性描述符升級打怪必備技能對象有自己的屬性和方法,對于我們對象的屬性來講,屬性還有自己的屬性,又稱為屬性描述符。這個方法接受三個參數,第一個是指定的對象,第二個是指定的對象參數,第三個當然是要修改的屬性描述符了。 對象的聲明有倆種: 字面量 通過new一個構造函數Object 兩者唯一的區別就是,字面量形式,可以一次賦值多個,通過new Object就得一個一個賦值 數據類型 ...

    fancyLuo 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<