# 關於物件 物件是以傳參考的形式賦值,指向同一個空間,因此不論是以不同的變數命名,或是以函式方式建立,皆會修改物件的值(包含原始資料)。 要解決此問題,可使用淺拷貝與深拷貝方式建立新的物件。 # 淺拷貝 有以下兩個方法: 1. 建立變數並使用**Object.assign**建立新空間並傳進物件 ``` const something = { name: 'apple', obj: {} } const something2 = Object.assign({}, something) ``` 此時something與something2為不同物件,建立在不同空間 2. **使用...展開** ``` const something = { name: 'apple', obj: {} } const something2 = {...something} ``` 此時something與something2為不同物件,建立在不同空間 淺拷貝優點為程式碼簡潔,但淺拷貝**只會拷貝第一層的屬性**,如果裡面有第二層物件的話,還是會是參考,此時就必須使用深拷貝。 # 深拷貝 **語法** `JSON.parse(JSON.stringify(物件名稱))` 先使用JSON.stringify將物件轉為純文字 再使用JSON.parse將純文字轉回物件 此時不管該物件有幾層,都會是不同的空間。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up