ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。
Object.is方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。

对象的拓展

简洁的表示方法

名值对的简洁方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
let o = 1;
let k = 2;
let es5_obj = {
o: o,
k: k
};
let es6_obj = {
o,
k
}
console.log(es5_obj, es6_obj);
// {o:1,k:2} {o:1,k:2}
}

对象中的方法的简洁方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
let es5_method = {
x: function () {
console.log('hello');
}
};
let es6_method = {
x() {
console.log('hello');
}
};
console.log(es5_method, es6_method);
// hello hello
}

属性表达式

1
2
3
4
5
6
7
8
9
10
11
12
{
let a = 'b';
let es5_obj = {
a: 'c',
b: 'c'
};
let es6_obj = {
[a]: 'c'
}
console.log(es5_obj, es6_obj);
// {a:"c",b:"c"} {b:"c"}
}

新增的API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
// is 方法
// 判断是否相等 is 方法 相当于 ===
console.log(Object.is('abc', 'abc'), 'abc' === 'abc'); // true true
console.log(Object.is([], []), [] === []); // false false
// 数组是引用类型的,所以指的是两个不同的空数组。
// 拷贝功能:assign();
// 浅拷贝,引用类型修改引用类型地址。
// 方法只会拷贝对象自身得属性。
console.log(Object.assign({ a: 'a' }, { b: 'b' })); // {a:"a",b:"b"}
// 循环遍历方法 entries()
let test = {
a: 'a',
b: 'b',
c: 'c'
}
for (let [key, value] of Object.entries(test)) {
console.log([key, value]);
}
// [a: 'a']
// [b: 'b']
// [c: 'c']
}