-
Notifications
You must be signed in to change notification settings - Fork 0
/
es6Object的扩展
96 lines (95 loc) · 2.1 KB
/
es6Object的扩展
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#允许直接写入变量,函数作为对象的属性,方法。
```javascript
var foo = "foo";
var bar = {
foo;
};
bar;//{foo : "foo"}
function a(x,y) {
return {x,y};
};
a(1,2);//{x:1,y:2};
```
#对象方法也变得简洁。(简洁表示法)
```javascript
var b = "name";
var a = {
test(){
return b;
}
};
a.test();//name;
```
#对象属性名表达式
```javascript
let protery = "hello world";
let bar = {
[protery]="hello";
["a"+"bc"]="world";
};
bar.abc = bar['abc'];//"world"
var lastWord = 'last word';
var a = {
'first word': 'hello',
[lastWord]: 'world'
};
a['first word']; // "hello"
a[lastWord]; // "world"
a['last word']; // "world"
```
#表达式用来定义方法
```javascript
let a = {
["h"+"ello"](){
console.log("hello world");
};
};
a["hello"];
//ƒ (){
console.log("hello world");
}
a.hello();//hello world
```
#属性表达式与简洁表示法不能同时使用。
```javascript
var foo = 'bar';
var bar = 'abc';
// var baz = { [foo] };//报错
var foo = 'bar';
var baz = { [foo]: 'abc'};//或var baz = { [foo]: bar};
```
#object()新增静态方法。
##obiect.is():判断两个值是否相等。与===操作符用法基本相同。
```javascript
Object.is(1,1);//true
Object.is(1,"1");false
```
//和===的区别之处如下
```javascript
console.log(+0 === -0); //true
console.log(NaN === NaN); // false
console.log(Object.is(+0, -0)); // false
console.log(Object.is(NaN, NaN)); // true
```
##obiect.assign():用于对象的合并,将源对象的可枚举属性复制到目标属性。
```javascript
let target = {a:1};
let source1 = {b:2};
let source2 = {c:3};
Object.assign(target,source1,source2);
//{a:1,b:2,c:3};
```
//如果有同名属性,后面的属性会覆盖前面的属性。
```javascript
let target = {a:1};
let source1 = {a:2};
let source2 = {c:3};
Object.assign(target,source1,source2);
//{a: 2, c: 3};
```
//Object.assign方法实行的是浅拷贝,而不是深拷贝。
//也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。
var obj1 = {a: {b: 1}};
var obj2 = Object.assign({}, obj1);
obj1.a.b = 2;
obj2.a.b; // 2