对象的属性

ES6中允许直接将变量和函数作为对象的属性和方法。

1
2
3
4
5
6
7
8
9
10
11
let name = "张无忌";
function sayMe() {
console.log("this is 张无忌");
}
var obj = {
// ES6运行变量名直接作为对象的属性和方法
name,
sayMe,
};

console.log(obj.name);//张无忌

Object的方法

  1. is()

    对同值相等算法的具体实现

    1
    2
    console.log(Object.is(+0, -0)); // false
    console.log(Object.is(NaN, NaN)); // true
  2. assign(target,...sources)方法

    用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。

    • target:目标对象
    • sources:源对象
    • 返回值:目标对象
    1
    2
    3
    4
    5
    6
    7
    8
    var obj = {
    name: "张无忌",
    age: 18,
    };

    var target = {};
    let result = Object.assign(target, obj);
    console.log(result, target); // { name: '张无忌', age: 18 } { name: '张无忌', age: 18 }

super关键字

super用于指向当前对象的原型对象。

1
2
3
4
5
6
7
8
9
10
11
12
var prop = {
age: 18,
};
var obj = {
name: "张无忌",
sayMe() {
console.log(super.age); // prop.age
},
};

Object.setPrototypeOf(obj, prop);
obj.sayMe();

对象的扩展运算符

用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。

1
2
3
4
5
6
7
var obj = {
name: "张无忌",
age: 18,
};
// 将元对象的可枚举的属性复制到目标对象。
var target = { ...obj };
console.log(target); // { name: '张无忌', age: 18 }