IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Object.assign用法 -> 正文阅读

[JavaScript知识库]Object.assign用法

1、是什么
Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。

const a ={ name: '张三'}
const b ={
   age: '18',
   sex: '女'
}
const c = Object.assign(a,b) 
console.log(c) // {name: '张三', age: '18', sex: '女'}
console.log(a) // {name: '张三', age: '18', sex: '女'}
console.log(a === c) // true

2、语法

Object.assign(target, ...sources)
  • target:目标对象
  • sources:源对象,一个或多个

3、注意点

  • Object.assign只是浅层的拷贝,如果源对象里有引用型,则目标对象的指针和源对象的指针指向的内存空间是同一块空间,改变其中一方,则另一方也会跟着改变,基本类型则不变
let b = {
  age: '18',
  work:{
     address: '广州',
     time:'7.30am'
  }
}
let c = Object.assign({}, b);
console.log(c); // { age: '18', work: {address: '广州', time: '7.30am'}}
c.work.address = '北京'
c.age = '22'
console.log(c); // { age: '22', work: {address: '北京', time: '7.30am'}}
console.log(b); // {{age: '18', work: {address: '北京', time: '7.30am'}}
  • 如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似地覆盖前面的源对象的属性。
const a ={ name: '张三'}
const b ={name: '李四'}
const c = {name: '王五'} 
Object.assign(a,b,c) 
console.log(a) 
// {name: '王五'}
  • string类型,null,undefined和 Symbol 类型的属性都会被拷贝
const a ={ name: '张三'}
let b = {
    a1: Symbol("SymbolValue"),
    a2: null,
    a3: undefined
}
let c = Object.assign(a, b);
console.log(c); 
//{name: '张三', a1: Symbol(SymbolValue), a2: null, a3: undefined}
  • 只会拷贝源对象自身的并且可枚举的属性到目标对象,对于不可枚举的属性,使用Object.assign的时候将被自动忽略
let userInfo = {}
 Object.defineProperty(userInfo, "work", {
    adrress: '广州',
   // enumerable: false // Object.defineProperty默认就是不可枚举的属性fase
});
Object.defineProperty(userInfo, "time", {
    value: '11.am',
    enumerable: true
});
let c = Object.assign({}, userInfo);
console.log(c); 
// {time: '11.am'}
  • 对于只读的属性,当分配新的对象覆盖他的时候,将抛出异常
let userInfo = {}
Object.defineProperty(userInfo, "time", {
    value: '11.am',
    writable: false
});
let c = Object.assign(userInfo , {time: '18.pm'});
console.log(c);
// VM586:6 Uncaught TypeError: Cannot assign to read only property 'time' of object '#<Object>'
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:02:04  更:2022-03-17 22:05:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:45:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码