12/08/2018, 16:39

ES6 Features Every JavaScript Developer Must Know Part 2

Trong bài viết này, tôi sẽ cover thêm những tính năng mới của ES6, phần đầu tiên đã được post tại ES6 Features Every JavaScript Developer Must Know 1. Object Property Assignment Combine 2 hoặc nhiều nhiều Objects. 1.1 Trường hợp Object property khác nhau var destination = { a: 0 }; var ...

Trong bài viết này, tôi sẽ cover thêm những tính năng mới của ES6, phần đầu tiên đã được post tại ES6 Features Every JavaScript Developer Must Know

1. Object Property Assignment

Combine 2 hoặc nhiều nhiều Objects.

1.1 Trường hợp Object property khác nhau

var destination = { a: 0 };
var src1 = { b: 1, c: 2 };
var src2 = { d: 3, e: 4 };

// ES5
Object.keys(src1).forEach(function(k) {
  destination[k] = src1[k];
})
Object.keys(src2).forEach(function(k) {
  destination[k] = src2[k];
});

// ES6
Object.assign(destination, src1, src2);

// RESULT
destination === { a: 0, b: 1, c: 2, d: 3, e: 4 };

1.2 Trường hợp Object property trùng nhau

var o1 = { a: 1, b: 1 };
var o2 = { b: 2 };

var destination = Object.assign({}, o1, 02);
// RESULT
destination === { a: 1, b:2 }

2. Clone hay Copy một Object

// ES6
var obj = { a: 0 };
var copy = Object.assign({}, obj);
copy === { a: 0 }

3. Tìm một phần tử trong Array

ES6 bổ sung thêm 2 methods mới đó là find() và findIndex(). Lưu ý là method find sẽ trả về phần từ đầu tiên tìm thấy trong Array.

var array = [ 'a', 'b', 'c', 'd', 'e', 'e', 'e' ];

// ES5
array.filter(function (x) { return x === 'e' })[0]
// RESULT: 'e'

// ES6
array.filter(x => x === 'e');
// RESULT: 'e'

array.findIndex(x => x === 'e')
// RESULT: 4

4. String Repeating

// ES5
var repeat = Array(3 + 1).join('foo ');
console.log(repeat); // foo foo foo

// ES6
var repeat = 'foo '.repeat(3);
console.log(repeat); // foo foo foo

5. Array Destructuring

// ES6
let a = 'world', b = 'hello';
[a, b] = [b, a];
console.log(a); // hello
console.log(b); // world

6.  Async/Await with Destructuring

// ES6
const [user, account] = await Promise.all([
  fetch('/user'),
  fetch('/account')
])
0