持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
Object.is()
Object.is()方法用来判断两个值是否严格相等,如下:
Object.is('foo', 'foo') // true
Object.is({}, {}) // false
Object.assign()
Object.assign()方法主要是用来对象的合并,它有多个参数,第一个参数就是目标对象,后面参数的对象数据都会合并到这个目标对象当中,简单用法如下:
const params = { name: 'wang' }
Object.assign(params, { id: 2 })
params // {name: 'wang', id: 2}
我们可以使用此方法为对象添加属性,比如,在我们开发中,遇到新增和编辑的功能,新增是没有id参数的,编功能是需要提供id参数,这时候,就可以判断如果是编辑的时候,在接口参数params对象上添加一个id参数。需要注意,如果合并的对象中有相同的属性,那么在合并的过程中后面对象中的值就会覆盖前面对象中的同名属性,如下:
const obj = { a: 1 }
Object.assign(obj, { a: 2, b: 2 }, { b: 3, c: 4 })
obj // {a: 2, b: 3, c: 4}
上述代码中,第二个参数对象中的a会覆盖obj中的同名a属性,第三个参数对象中的b也会覆盖第二个参数对象中的b属性。
另外需注意的是,如果对象中某个属性的值是个对象,那么合并到目标对象中是这个对象的引用,而不是其值,也就是说Object.assign()方法在合并的时候使用的是浅拷贝,如下:
const obj1 = { a: { b: 1 } }
const obj2 = Object.assign({}, obj1)
obj1.a.b = 2
obj2.a.b // 2
如上,我们将obj1对象合并到obj2中,然后更改obj1中的a属性对象中的值,然后发现obj2中的值也被更改了,所以Object.assign方法对于属性值是对象的类型,是拷贝的这个对象的引用,而不是其值。
Object.hasOwn()
Object.hasOwn()方法用来判断属性是否为对象的自身属性(对象中的属性分为继承属性和自身属性),它接收两个参数,第一个参数是对象,第二个参数是属性名称,如下:
const obj = Object.create({ a: 1 })
obj.b = 2
Object.hasOwn(obj, 'a') // false
Object.hasOwn(obj, 'b') // true
上述代码中,我们首先创建了一个obj对象,在创建的时候继承了{ a: 1 },所以a在obj中是继承属性,而b则是obj的自身属性,所以使用Object.hasOwn()方法进行判断的时候,a属性会返回false,而b属性则是true。