js中Object.freeze()函數的作用,手動封裝一個Object.freeze()


從字面理解,freeze是冷凍,凍結的意思(像賬戶凍結)。

當用const申明常量時,基礎數據類型申明后是不可以被修改的,但是申明數組和對象時,申明的變量只是指向了該引用數據類型的地址,所以只是地址不允許被修改,但是內容可以被修改,這個時候就可以用到Object.freeze()函數了

 

 

 

 

給用Object.freeze()函數包裹的對象添加屬性時,打印出來的結果是沒有添加成功的,那么對已有的屬性進行修改,能否實現呢

打印出來結果,並沒有修改成功,這也就是Object.freeze()函數的作用,可以凍結數據,內容不允許被拓展和修改。

那么在Object.freeze()函數之前,是怎么實現引用數據類型的凍結功能的呢,根據Object.freeze()的這兩個功能,我們可以手動封裝一個Object.freeze()

 

 

 

 

可以看到用Object.defineProperty()函數對對象的屬性添加了只讀的描述后,該屬性也是不允許被修改的,但是obj還是可以添加屬性的,那么我們在用Object.seal()函數將obj包裹一下,就可以實現不允許添加屬性的功能了

 

 

也就是說,我們可以把引用數據類型同時用Object.defineProperty()和Object.seal()函數封裝包裹起來,就可以實現Object.freeze()函數的效果了

 

 

 

 

效果也是一樣的,這就是Object.freeze()函數所實現的功能了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM