Object Dstructuring.md

Object Destructuring

Object Destructuring

1
2
3
4
5
6
7
8
9
10
11
12
// before
const data = () => {
return {
a: 1,
b: 2,
c: 3
}
}
var tmp = data();
var first = tmp.a;
var second = tmp.b;
var third = tmp.c;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// after
const data = () => {
return {
a: 1,
b: 2,
c: 3,
d: 4,
e: 5
}
}
var tmp = data();
var {
a: first,
b: second,
c: third,
...fourth
} = data();

Object Assignment Destructuring

1
2
3
4
5
6
7
8
9
10
11
const data = () => {
return {
a: 1,
b: 2,
c: 3,
d: 4,
e: 5
}
}
var first, second;
{first, second} = data();

Object Default Assignment

说到默认值就要惊醒自己,要防止错误, 而防止错误的措施就是, 给数据源默认值

1
2
3
4
5
6
7
8
// before
const data = () => {
return null;
}
var tmp = data() || {};
var first = tmp.a; // Throw Type Error
var second = tmp.b; // Throw Type Error
var third = tmp.c; // Throw Type Error
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// after
const data = () => {
return {
a: 1,
b: 2,
c: 3,
d: 4,
e: 5
}
}
var tmp = data();
var {
a: first = 42,
b: second,
c: third,
...fourth
} = data() || {};

Nested Object Destructuring

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// before
const data = () => {
return {
a: 1,
b: {
c: 2,
d: 3
}
};
}
var tmp = data() || {};
var first = tmp.a;
var second = tmp.b.c;
var third = tmp.b.d;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// after
const data = () => {
return {

a: 1,
b: {
c: 2,
d: 3
}
}
}
var {
a: first = 42,
b: {
c: second,
d: thrid,
},
...fourth
} = data() || {};

params arguments object

1
2
3
4
5
6
7
8
9
10
11
12
function data (tmp = {}) {
var {
a,
b
} = tmp;
}

function data ({
a,
b
} = {}) {
}

Nested Object & Array Destructuring

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var obj = {
a: 1,
b: {
x: 2
},
c: [3, 4]
}

var {
a,
b,
b: {
x: w
},
c: [d, e]
} = obj;