關於JS的assign() 方法


先看這樣一個示例:

 
JS示例

輸出的結果是這樣的:

 
輸出

結果是我的obj的name對象被覆蓋。


如何解決呢?

這里查到了一個assign()的方法。
關於assign()方法,MDN上是這樣解釋的:Object.assign() 方法用於將所有可枚舉的屬性的值從一個或多個源對象復制到目標對象。它將返回目標對象。
於是我們用assign()方法改寫一下代碼:

 
改寫代碼

執行結果是這樣的:

 
改寫完的輸出

這樣我們的obj對象的屬性就不會被覆蓋啦~~


注意事項:

在屬性拷貝過程中可能會產生異常,比如目標對象的某個只讀屬性和源對象的某個屬性同名,這時該方法會拋出一個 TypeError 異常,拷貝過程中斷,已經拷貝成功的屬性不會受到影響,還未拷貝的屬性將不會再被拷貝。
注意, Object.assign 會跳過那些值為 null 或 undefined 的源對象。
Object.assign() 拷貝的是屬性值。假如源對象的屬性值是一個指向對象的引用,它也只拷貝那個引用值。

它無法實現深層復制

比如:

 
深層復制

輸出結果:

 
結果

雖然進行了復制,但是它只能實現淺層復制,e的指向和f的指向沒有發生改變。



作者:7天蘋果
鏈接:https://www.jianshu.com/p/fd3f8a45d5fd
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

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



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