簡體   English   中英

方法preventExtensions javascript和defineProperty

[英]method preventExtensions javascript and defineProperty

首先,大家好,對不起我的英語。
我仍然會利用這個社區的專業知識和可用性。
我的問題已經解決,嘗試在preventExtensions方法之后向對象添加屬性。
我知道此方法的工作原理,該方法使對象不可擴展,我無法向該對象添加任何屬性
我的問題是:為什么如果我嘗試以這種方式添加屬性(obj.prop),則控制台中不會發現任何錯誤,並且該屬性將無法定義,
但是,如果我嘗試使用Object.defineproperty方法添加新屬性,則會在控制台中發現錯誤?

<script>
       var obj={}
       Object.preventExtensions(obj)
       // i can not add other properies to this object
       console.log(Object.isExtensible(obj))//false

       // why if i try to add a property in this way i'll find undefined
       obj.b='bbb'
       console.log(obj.b)

       // and in this way i'll find an error
       Object.defineProperty(obj, 'w', { enumerable: true,configurable:true,writable:true,value:'www' });
</script>

基本上我的問題是關於obj.prop和Object.defineProperty之間的不同行為
任何建議都會很高興地閱讀,謝謝大家。

我想這種行為是特定於瀏覽器的。 甚至文檔也對此主題含糊不清。

嘗試將新屬性添加到不可擴展的對象將失敗, 無論是無提示還是通過拋出TypeError (在嚴格模式下,這都是最常見的,但不是排他的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM