ES6 13对象的新增方法

 
 要点:新增方法

 

 一.新增方法
 1.ES6提供了Object.is()方法来解决“===”中一些恒等中的缺点
 console.log(Object.is(100,'100')); //false 必须恒等
 console.log(Object.is({},{})); //false 指向不同
 console.log(Object.is(+0,-0)); //false
 console.log(Object.is(NaN,NaN)); //true
 console.log(NaN===NaN);//false
 console.log(+0===-0);//true

 

 2.ES6提供了Object.assign()方法可以合并指定对象至目标对象内部
//...传参,合并所有对象,返回给参数一的目标对象
let obj1={ name:'Mr.Lee', age:100 } let obj2={ name:'Mr.Wang', age:200 } let obj3={ gender:'男' } console.log(Object.assign(obj1,obj2,obj3)); //第一个对象得到合并后的结果 console.log(obj1);

 

①如果属性有相同属性,后面的源对象内容会覆盖之前的属性值
 ②如果直接传非对象内容,会转换为对象
 ③如果传入的是undefined和null会报错

 

3.ES6提供了Object.getPrototypeOf()和Object.setPrototypeOf()方法
let obj={
    fn(){
        return 'fn';
    }
}
let obj2={
    fn(){
        return 'fn2';
    }
}
// 以obj对象为原型
let f=Object.create(obj);
 

// 检测时obj是否f的原型对象
 console.log(Object.getPrototypeOf(f)===obj);
// 输出原型对象的fn
console.log(f.fn());
 

// 设置f的原型对象为obj2
 Object.setPrototypeOf(f,obj2);
 console.log(f.fn());
console.log(Object.getPrototypeOf(f)===obj2);
 

 

 4.ES6提供了super关键字,用于原型中方法的继承功能
let obj={
    fn(){
        return 'fn'
    }
}
let f={
    fn(){
        return super.fn()+',extend!';
    }
}
// 设置obj是f的原型
Object.setPrototypeOf(f,obj);
console.log(f.fn());
 

// 可以再设置以f为原型
let h=Object.create(f);
console.log(h.fn());

 

posted @ 2021-11-28 23:33  翟莹萍  阅读(34)  评论(0编辑  收藏  举报