es6 -- 对象的扩展(常用)

版权声明:版权声明:本文为博主原创文章,若文章中有错误请联系博主改正,请不要恶意留言(不喜欢请绕道)。欢迎大家转载 https://blog.csdn.net/qq_37674616/article/details/83038327

目录

 

1.属性的简写

2.Object API

3.扩展运算符


1.属性的简写

如果对象中只写属性名,不写属性值。这时,属性值等于属性名所代表的变量。 

//es5写法
var name='cc';
var obj={
    name:name,
    age:12
}

//es6
var obj={
    name,
    age:12
}

2.Object API

es6对于Object构造函数也进行了扩展,加入了一些方法,如下。

1.Object.is()

用于比较两个值是否严格相等。与(===)基本一致,不同之处如下:

+0===-0  //true

NaN===NaN //false

Object.is(+0,-0); //false

Object.is(NaN,NaN); //true

2.Object.assign()

用来将源对象的所有可枚举属性复制到目标对象。它至少需要两个对象作为参数,第一个参数是目标对象,后面的参数都是源对象。只要有一个参数不是对象就会报错

var a={name:'cc',age:12};
var b={gender:'male'};
var c={name:'cc01'};

//将b,c加入到a中
Object.assign(a,b,c); //{name: "cc01", age: 12, gender: "male"}

2.1 为对象添加方法

Object.assign(Person.prototype,{
    sayName(){
        ...
    },
    sayAge(){
        ...
    }
});

//===>等价
Person.prototype.sayName=function(){...};
Person.prorotype.sayAge=function(){...};

3.Object.setPrototypeOf(obj,prototype)

将prototype对象设置为obj的原型。

function Animal(){
    ...
}
function Dog(){
    ...
}
//继承
Dog.prototype=new Animal();

//es6
Object.setPrototypeOf(Dog,new Animal);

 4.Object.getPrototypeOf(obj)

用于读取一个对象的prototype对象

5. Object.keys(obj)

返回一个数组,包括自身的(不包含继承的)所有可枚举属性(Symbol属性)

**:for-in 遍历对象自身和继承的可枚举属性。

6. Object.values()

返回对象中包含所有属性值的数组

7. Object.entries()

返回对象所有键值对组成的数组

var obj={
    a:1,
    b:2,
    c:3
}

Object.keys(obj); //["a","b","c"];
Object.values(obj); //[1,2,3];
Object.entries(obj); //[["a",1],["b",2],["c",3]]

3.扩展运算符

该运算符用于取出参数对象的所有可遍历属性,复制到当前对象中。

let obj={name:'cc',age:12};
let n={...obj};
console.log(n);//{name:'cc',age:12}

合并对象 

var a={
    sayName(){
        console.log('say Name');
    }
}
var b={
    ...a,
    sayAge(){
        console.log('say age');
    }
}
b.sayName();

猜你喜欢

转载自blog.csdn.net/qq_37674616/article/details/83038327