- Object.assign 方法
1.1 将多个源对象中的属性复制到一个目标对象中
// const source1 = {
// a: 123,
// b: 123
// }
// const source2 = {
// b: 789,
// d: 789
// }
// const target = {
// a: 456,
// c: 456
// }
// 第一个是目标对象,所有的对象会被复盖到这个对象当中 ,如果后一个属性名和目标属性名一致会被覆盖
// const result = Object.assign(target, source1, source2)
// console.log(target)
2 . Object.is (同值比较的算法,返回ture或false)
console.log(
NaN === NaN // false
Object.is(NaN,NaN) // true
3. Proxy (给对象设置访问代理器的)
// const person = {
// name: 'zce',
// age: 20
// }
// const personProxy = new Proxy(person, {
// person 目标对象
// // 监视属性读取
// get (target, property) {
// return property in target ? target[property] : 'default'
// // console.log(target, property)
// // return 100
// },
// // 监视属性设置
// // 第一个参数是代理目标对象, 写入的属性名称,写入的属性值
// set (target, property, value) {
// if (property === 'age') {
// if (!Number.isInteger(value)) {
// throw new TypeError(${value} is not an int)
// }
// }
// target[property] = value
// // console.log(target, property, value)
// }
// })
// personProxy.age = 100
// personProxy.gender = true
// console.log(personProxy.name)
// console.log(personProxy.xxx)
4 . definedProperty 和Proxy 的区别
4.1 优势1:
definedProperty 只能监听属性的读写
Proxy 可以监视读写以外的操作
优势2:
Proxy 可以很方便的监视数组操作
优势3:
Proxy 不需要侵入对象