關于Object.assign

Object.assign

基本用法

Object.assign() 方法用于將所有可枚舉屬性的值從一個或者多個源對象source復制到目標對象。它將返回目標對象target

const target = { a: 1, b: 2 }
const source = { b: 4, c: 5 }const returnedTarget = Object.assign(target, source)target // { a: 1, b: 4, c: 5 }
returnedTarget // { a: 1, b: 4, c: 5 }

Object.assign方法的第一個參數是目標對象,后面的參數都是源對象。

注意:如果目標對象與源對象有同名屬性,或多個源對象有同名屬性,則后面的屬性會覆蓋前面的屬性。

如果該參數不是對象,則會先轉為對象,然后返回

由于undefinednull無法轉為對象,所以如果它們作為目標對象參數,就會報錯


與解構賦值的區別

const data1 = {...preData, a:1}
const data2 = Object.assign(preData,{a:1})

兩者的主要區別在于對象的修改方式是否影響原始對象

  1. const data = {...preData, a:1}
    • 作用:創建一個新對象,將preData的所有屬性拷貝過來,并覆蓋a的值
    • 特點:
      • 不修改preData,而是創建一個新的對象
      • 淺拷貝:如果preData里面是嵌套對象,仍然是引用關系
const preData = { x: 10, y: 20 };
const data = { ...preData, y: 30 };console.log(preData); // { x: 10, y: 20 }(不受影響)
console.log(data);    // { x: 10, y: 30 }(新對象)
  1. const data = Object.assign(preData,{a:1})
    • 作用:直接將{a:1}合并到preData中,并返回修改后的preData
    • 特點:
      • 修改了preData
      • 淺拷貝
const preData = { x: 10, y: 20 };
const data = Object.assign(preData, { y: 30 });console.log(preData); // { x: 10, y: 30 }(被修改了!)
console.log(data);    // { x: 10, y: 30 }(與 preData 相同)
  1. 應用場景
  • 如果想修改原對象,使用Object.assign
  • 如果不想修改原對象,使用解構賦值

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/75560.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/75560.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/75560.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GitHub高級篩選小白使用手冊

GitHub高級篩選小白使用手冊 GitHub 提供了強大的搜索功能,允許用戶通過高級篩選器來精確查找倉庫、Issues、Pull Requests、代碼等。下面是一些常用的高級篩選用法,幫助你更高效地使用 GitHub 搜索功能。 目錄 搜索倉庫搜索Issues搜索Pull Requests搜…

手動集成sqlite的方法

注意到sqlite有backup方法(https://www.sqlite.org/backup.html)。 也注意到android中sysroot下,沒有sqlite3的庫,也沒有相關頭文件。 如果要使用 sqlite 的backup,那么就需要手動集成sqlite代碼到項目中。可以如下操…

藍橋杯真題 2109.統計子矩陣

原題地址:1.統計子矩陣 - 藍橋云課 問題描述 給定一個 NMNM 的矩陣 AA, 請你統計有多少個子矩陣 (最小 1111, 最大 NM)NM) 滿足子矩陣中所有數的和不超過給定的整數 KK ? 輸入格式 第一行包含三個整數 N,MN,M 和 KK. 之后 NN 行每行包含 MM 個整數, 代表矩陣 AA. 輸出格…

藍橋杯—最少操作數

一.題目 分析:每次可以進行三次操作,求在n步操作后可以達到目標數的最小n,和最短路徑問題相似,分層遍歷加記憶化搜索防止時間復雜度過高,還需要減枝操作 import java.util.HashSet; import java.util.LinkedList; import java.ut…

Linux內核NIC網卡驅動實戰案例分析

以下Linux 內核模塊實現了一個虛擬網絡設備驅動程序,其作用和意義如下: 1. 作用 (1)創建虛擬網絡設備對 驅動程序動態創建了兩個虛擬網絡設備(nic_dev[0]和nic_dev[1]),模擬物理網卡的功能。這兩…

Trae初使用心得(Java后端)

1.前提 2025年3月3日,字節跳動正式官宣“中國首個 AI 原生集成開發環境(AI IDE)”Trae 國內版正式上線,由于之前項目的原因小編沒有及時的去體驗,這幾日專門抽空去體驗了一下感覺還算可以。 2.特點 Trade重在可以白嫖…

[項目]基于FreeRTOS的STM32四軸飛行器: 十二.角速度加速度濾波

基于FreeRTOS的STM32四軸飛行器: 十二.濾波 一.濾波介紹二.對角速度進行一階低通濾波三.對加速度進行卡爾曼濾波 一.濾波介紹 模擬信號濾波: 最常用的濾波方法可以在信號和地之間并聯一個電容,因為電容通交隔直,信號突變會給電容充電&#x…

UNIX網絡編程筆記:TCP、UDP、SCTP編程的區別

一、核心特性對比 特性TCPUDPSCTP連接方式面向連接(三次握手)無連接面向連接(四次握手)可靠性可靠傳輸(重傳、確認機制)不可靠傳輸可靠傳輸(多路徑冗余)傳輸單位字節流(…

Python爬蟲異常處理:自動跳過無效URL

爬蟲在運行過程中常常會遇到各種異常情況,其中無效URL的出現是較為常見的問題之一。無效URL可能導致爬蟲程序崩潰或陷入無限等待狀態,嚴重影響爬蟲的穩定性和效率。因此,掌握如何在Python爬蟲中自動跳過無效URL的異常處理技巧,對于…

C++語法學習的主要內容

科技特長生方向,主要學習的內容為 一,《C語法》 二,《數據結構》 三,《算法》 四,《計算機基礎知識》 五,《初高中的數學知識》 其中,《C語法》學習的主要內容如下: 1,cout輸出語句和鍵盤…

3、孿生網絡/連體網絡(Siamese Network)

目的: 用Siamese Network (孿生網絡) 解決Few-shot learning (小樣本學習)。 Siamese Network并不是Meta Learning最好的方法, 但是通過學習Siamese Network,非常有助于理解其他Meta Learning算法。 這里介紹了兩種方法:Siamese Network (孿生網絡)、Trplet Loss Siam…

從零構建大語言模型全棧開發指南:第二部分:模型架構設計與實現-2.2.1從零編寫類GPT-2模型架構(規劃模塊與代碼組織)

?? 點擊關注不迷路 ?? 點擊關注不迷路 ?? 點擊關注不迷路 文章大綱 2.2.1 從零編寫類GPT-2模型架構(規劃模塊與代碼組織)1. 模型架構設計規劃1.1 架構核心組件2. 模塊化設計實現2.1 輸入處理模塊2.1.1 分詞與嵌入2.1.2 位置編碼2.2 解碼塊設計2.2.1 多頭注意力子層2.2.…

消息隊列(Kafka及RocketMQ等對比聯系)

目錄 消息隊列 一、為什么使用消息隊列?消息隊列有什么優點/缺點?介紹下Kafka、ActiveMQ、RabbitMQ、RocketMQ有什么優點缺點,如何取舍? 1.公司業務場景是什么,這個業務場景有什么挑戰,如果不用MQ有什么麻…

Android 13系統定制實戰:基于系統屬性的音量鍵動態屏蔽方案解析

1. 需求背景與實現原理 在Android 13系統定制化開發中,需根據設備場景動態屏蔽音量鍵(VOLUME_UP/VOLUME_DOWN)功能。其核心訴求是通過系統屬性(persist.sys.roco.volumekey.enable)控制音量鍵的響應邏輯,確…

解鎖DeepSeek潛能:Docker+Ollama打造本地大模型部署新范式

🐇明明跟你說過:個人主頁 🏅個人專欄:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目錄 一、引言 1、什么是Docker 2、什么是Ollama 二、準備工作 1、操…

uv - Guides 指南 [官方文檔翻譯]

文章目錄 Guides 指南概述安裝 Python入門安裝特定版本重新安裝 Python查看 Python 安裝自動 Python 下載使用現有的 Python 版本 運行腳本在沒有依賴的情況下運行腳本運行帶有依賴的腳本創建一個Python腳本聲明腳本依賴使用替代包索引鎖定依賴提高可重復性使用不同的 Python 版…

根據模板將 Excel 明細數據生成 PDF 文檔 | PDF實現郵件合并功能

在日常辦公中,我們常常會面臨這樣的需求:依據特定的模板,把 Excel 里的每一條數據轉化為單獨的 PDF 文檔,且這些 PDF 文檔中的部分內容會根據 Excel 數據動態變化。這一功能不僅能高效完成任務,還支持圖片的動態替換&a…

apache安裝腳本使用shell建立

注意防火墻,yum,網絡連接等 以下是具體的apache安裝腳本 #!/bin/bash # Set Apache version to install ## author: yuan # 檢查外網連接 echo "檢查外網連接..." ping www.baidu.com -c 3 > /dev/null 2>&1 if [ $? -eq 0 ]; …

wordpress主題使用中常見錯誤匯總

在WordPress主題的使用過程中,開發者可能會遇到各種問題。下面是一些常見錯誤的匯總,并給出了相應的解決方法。 一、主題安裝與激活錯誤 無法激活主題:檢查主題文件是否完整,以及是否符合WordPress的主題規范。 激活主題后出現…

如何設計一個訂單號生成服務?應該考慮那些問題?

如何設計一個訂單號生成服務?應該考慮那些問題? description: 在高并發的電商系統中,生成全局唯一的訂單編號是關鍵。本文探討了幾種常見的訂單編號生成方法,包括UUID、數據庫自增、雪花算法和基于Redis的分布式組件,并…