es6中 对象新增的方法

这是我参与新手入门的第3篇文章

Object.assign()

  • Object.assign()方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)
const target = { a: 1 };
const source = { b: 2 };
const source1 = { c: 3 };
Object.assign(target, source, source1);
target // {a:1, b:2, c:3}

复制代码
  • Object.assign()方法的第一个参数是目标对象,后面的参数都是源对象

注意点

  1. 如果只有一个参数,Object.assign()会直接返回该参数。如果该参数不是对象,则会先转成对象,然后返回。由于undefined和null无法转成对象,所以如果它们作为参数,就会报错
  2. Object.assign()是浅拷贝
  3. 同名属性的替换
  4. Object.assign()可以用来处理数组,但是会把数组视为对象
Object.assign([1, 2, 3], [4, 5]) // [4, 5, 3]
复制代码

是因为把[1,2,3]看做一个对象,源对象覆盖了目标对象的值

Object.is()

  • Object.is(value1, value2); value1需要比较的第一个值。value2需要比较的第二个值。
  • 返回值 一个 布尔值指示两个参数是否相同的
    1. Object.is() 会在下面这些情况下认为两个值是相同的:
  1. 两个值都是 undefined
  2. 两个值都是 null
  3. 两个值都是 true 或者都是 false
  4. 两个值是由相同个数的字符按照相同的顺序组成的字符串
  5. 两个值指向同一个对象
  6. 两个值都是数字并且
    • 都是正零 +0
    • 都是负零 -0
    • 都是 NaN
    • 都是除零和 NaN 外的其它同一个数字
  • 种相等性判断逻辑和传统的 == 运算符所用的不同,== 运算符会对它两边的操作数做隐式的类型转换(如果它们是不同类型的值的话),然后才进行相等性比较,(所以才会有类似 “” == false 为 true 的现象),但 Object.is 不会做这种类型转换。当然,严格相等运算符 === 也不会对操作数进行类型转换,但是它会把 -0 和 +0 这两个数值视为相同的,还会把两个 NaN 看成是不相等的。
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享