關鍵在於object.defineproperty()這個api。可以接受三個引數,
object.
defineproperty
(obj,prop,desc)
;obj:在其上面定義屬性的物件
prop:要定義和修改的屬性
desc:將被定義或修改的屬性描述符,其中有
value 該屬性對應的值,預設undefined
get 提供getter方法
set 提供set方法
writable 當且僅當該屬性的writable為true時,value才能被賦值運算子改變。預設為 false
enumerable 定義了物件的屬性是否可以在 for
...in 迴圈和 object.
keys
() 中被列舉 預設為 false
configurable 表示物件的屬性是否可以被刪除,以及除value和writable特性外的其他特性是否可以被修改 預設為 false
function
_const
(key, value)
object.
defineproperty
(window, key, desc)
}_const
('obj',)
//定義obj
obj.b =
3//可以正常給obj的屬性賦值
obj =
//丟擲錯誤,提示物件read-only
const實現機制
c語言以及c 語言中的const究竟表示什麼?其具體的實現機制又是如何實現的呢?本文將對這兩個問題進行一些分析,簡單解釋const的含義以及實現機制。簡單的說const在c語言中表示唯讀的變數,而在c 語言中表示常量。關於const在c與c 語言中的使用以及更多的區別,以後有時間另開一貼說明。那麼c...
Static 和 Const 的幾個功能
在變數中 用static宣告區域性變數 區域性變數指在 塊 內部定義的變數,只在 塊內部有效 作用域 其預設的儲存方式是自動變數或說是動態儲存的,即指令執行到變數定義處時才給變數分配儲存單元,跳出 塊時釋放記憶體單元 生命期 用static宣告區域性變數時,則改變變數的儲存方式 生命期 使變數成為靜...
const的功能和二維陣列
看到乙個const,其初始目的 取代預編譯指令,即預處理,揚長避短。具體作用 定義const常量,具有不可變性。防止對程式的意外修改。如 void f const int i 節省空間,節省記憶體。提高效率。便於型別檢查,使編譯器對處理內容有更多了解,消除了一些隱患。可以避免意義模糊的數字出現,同樣...