[英]Where does a JavaScript object store whether it's extensible or not?
在其[[Extensible]]
內部插槽中 ,它不能直接從您的代碼訪問(當然,可通過Object.isExtensible
和Reflect.isExtensible
訪問)。
從鏈接:
每個普通對象都有一個布爾值[[Extensible]]內部插槽,用於控制是否可以將屬性添加到對象中。 如果[[Extensible]]內部插槽的值為false,則可能無法向對象添加其他屬性。 此外,如果[[Extensible]]為false ,則不能修改對象的[[Prototype]]內部插槽的值。 一旦對象的[[Extensible]]內部插槽的值設置為false,它可能不會隨后更改為true 。
內部插槽有點像屬性,但不是繼承的,也不能(直接)從程序代碼訪問。 從對象內部方法和內部插槽 :
內部插槽對應於與對象關聯並由各種ECMAScript規范算法使用的內部狀態。 內部插槽不是對象屬性,不會繼承它們。 根據特定的內部插槽規范,此狀態可能包含任何ECMAScript語言類型或特定ECMAScript規范類型值的值。 除非另有明確說明,否則內部插槽將作為創建對象的過程的一部分進行分配,並且可能無法動態添加到對象。 除非另有說明,否則內部槽的初始值為undefined值。 本規范中的各種算法創建具有內部插槽的對象。 但是,ECMAScript語言沒有提供將內部插槽與對象關聯的直接方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.