ES6内置对象扩展

一、Object.is()

object.is()用来严格比较俩个值是否相等,与严格比较运算符===的行为基本一致。
不同之处有两点。
1.+0不等于-0,
2.NaN等于自生

+0 === -0 //true
NaN === NaN //false

Object.is(+0,-0)//false
Object.is(NaN,NaN)//true

二、Object.assign()

将源对象的所有可枚举属性,复制到目标对象上。
至少需要俩个对象为参数
第一个对象是目标对象
第二个是源对象
只要有一个参数不是对象,就会抛出TypeError错误。
同名属性,目标对象的属性值会被覆盖
要是多个源对象的话,后面的会覆盖前面的。
这是浅拷贝

三、setPrototypeOf()

用法和__proto__相同
用来设置一个对象的原型对象

Object.setPrototypeOf({
    
    },null)
//等同于
function(obj,proto){
    
    
  obj.__proto__=proto;
 return obj;
}

就是设置
对象实例的原型对象。相当于封装了__proto__
来设置实例的原型对象

四、object.getPrototypeOf()

用于读取一个对象的prototype对象
即获取一个对象的原型

五、es6增强对象写法

将同名的属性和变量属性值缩写成一个值

let obj ={
    
    
birth:birth
say:function(){
    
    
}
}
es6中写成
let obj = {
    
    
birth,
say(){
    
    }

}

这种写法在函数返回多个值时非常好用,直接返回一个对象,就行。
return {x,y}
等同于
return {
x:x
y:y
}

六、proxy

在外界访问对象时,可以先通过proxy设置的一层拦截,访问可以被过滤和改写。
es6提供proxy构造函数,来生成proxy实例对象

var proxt =new Proxy({
    
    },{
    
    get:function(a,b){
    
    }})

构造函数接受两个参数,第一个是目标对象
第二个是拦截函数,用来拦截对目标对象的访问请求,它有一个get方法,
第一个参数是目标对象,第二个参数是所要访问的目标对象的属性。
可以用来设置,对象存在的属性能访问到,不存在的属性就返回一个其他的。

扫描二维码关注公众号,回复: 12647383 查看本文章

七、Object.observe()

用来监听对象的变化,
接受两个参数,第一个是目标对象,第二个是回调函数
一旦监听对象发生变化,就会触发回调函数。
回调函数接受一个数组参数,
每一个元素对应对象的每一个键值对,
目前支持六种变化
add,updata,delete,setPrototype,reconfigure(属性的attributes对象发生变化),preventExtensions(当一个对象变得不可扩展时,也就不必再观察了)
还可以接受第三个参数,用来指定监听的事件种类。

Object.observe(o,observer,['delete'])

这种表示只发生delete事件时,才会调用回调函数。

7.Object.unobserve

取消对象 的监听

猜你喜欢

转载自blog.csdn.net/m0_48459838/article/details/113800292