理解ES6的Object.assign()和const

前端 潘老师 6个月前 (11-18) 121 ℃ (0) 扫码查看

本文主要讲解关于ES6的Object.assign()、const相关内容,帮助大家进一步理解,避免进入误区,让我们来一起学习下吧!

1. Object.assign()理解

Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

MDN官方文档的例子:

const target = {
    a: 1,
    b: 2
}
const source = {
    b: 4,
    c: 5
}
const returnTarget = Object.assign(target, source)
console.log(target)        //{ a: 1, b: 4, c: 5 }
console.log(returnTarget) // { a: 1, b: 4, c: 5 }
  • 该属性在ES6才引入,是一个不错的操作js对象格式的新属性。里面还涉及到深拷贝和浅拷贝,替换对象等众多概念。
  • Object.assign()方法只会拷贝源对象自身的并且可枚举的属性到目标对象。
  • Object.assign()最常用的功能是将新的对象或者json属性复制和追加到老的对象,然后生成一个新的整合对象。
  • 在项目中,很常用的就是请求传参时,追加各种筛选条件。

重要描述:如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似的覆盖前面的源对象的属性。(意思是,如果源对象利用有 j = { a: 1 },新对象也有 { a: 2 },那么就会直接覆盖,相当于是j.a = 2。)

例子:

let obj1 = {
    a: 1,
    b: 2
}
Object.defineProperty(obj1,'c',{
    value: 3,
    enumerable: false
})
let obj2 = {
    d: 4
}
Object.assign(obj1,obj2)
console.log(obj1)  // { a: 1, b: 2, d: 4, c: 3 }
for (key in obj1) {
    console.log(key)  // a b d
    console.log(obj1[key])  // 1 2 4
}

2. const理解

  • var:随意改变作用域和值。
  • const:相当于给变量加了一个锁。

const声明创建一个值得只读引用。但是这并不意味着它所持有的值是不可变的,只是变量标识符不能重新分配。例如,在引用内容是对象的情况下,这意味着可以改变对象的内容(例如,参数)。

比如:

const num = 1000
num = 2000 // 报错,因为在同一作用域,num的值已经固定,不可改变。

但是:

const obj = {
    a: 1000
}
obj.a = 2000
console.log(obj)  // { a: 2000}
// 这个不会报错,因为其属性值是可以被改变的,也就是文档里说的改变对象内容,但是不能改变他在内存中的表示和位置。

以上就是关于ES6得Object.assign()、const相关的全部内容,希望对你有帮助。欢迎持续关注潘子夜个人博客,学习愉快哦!


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/front/11361.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】