Trong JavaScript, Object
kiểu dữ liệu được sử dụng để lưu trữ các cặp giá trị khóa và giống như Array
kiểu dữ liệu, chứa nhiều phương thức hữu ích. Đây là một số phương pháp hữu ích mà bạn sẽ sử dụng khi làm việc với các đối tượng.
Phương thức gán đối tượng
Các Object.assign()
phương pháp được sử dụng để
- thêm các thuộc tính và giá trị cho một đối tượng hiện có
- tạo một bản sao mới của một đối tượng hiện có, hoặc
- kết hợp nhiều đối tượng hiện có thành một đối tượng duy nhất.
Các Object.assign()
phương pháp yêu cầu một targetObject
như một tham số và có thể chấp nhận số lượng không giới hạn sourceObjects
như các tham số bổ sung.
Điều quan trọng cần lưu ý ở đây là targetObject
tham số sẽ luôn được sửa đổi. Nếu tham số đó trỏ đến một đối tượng hiện có, thì đối tượng đó sẽ được sửa đổi và sao chép.
Nếu bạn muốn tạo một bản sao của một đối tượng mà không sửa đổi đối tượng ban đầu đó, bạn có thể chuyển một đối tượng trống {}
như là người đầu tiên (targetObject
) và đối tượng được sao chép dưới dạng thứ hai (sourceObject
) tham số.
Nếu các đối tượng được truyền dưới dạng tham số vào Object.assign()
chia sẻ các thuộc tính (hoặc khóa) giống nhau, các giá trị thuộc tính xuất hiện sau trong danh sách tham số sẽ ghi đè lên các thuộc tính xuất hiện trước đó.
cú pháp
Object.assign(targetObject, ...sourceObject);
Giá trị trả về
Object.assign()
trả về targetObject
.
ví dụ
Sửa đổi và sao chép targetObject
:
let obj = {name: 'Dave', age: 30};
let objCopy = Object.assign(obj, {coder: true});
console.log(obj); // { name: 'Dave', age: 30, coder: true }
console.log(objCopy); // { name: 'Dave', age: 30, coder: true }
Sao chép targetObject
không sửa đổi:
let obj = {name: 'Dave', age: 30};
let objCopy = Object.assign({}, obj, {coder: true});
console.log(obj); // { name: 'Dave', age: 30 }
console.log(objCopy); // { name: 'Dave', age: 30, coder: true }
Các đối tượng có cùng thuộc tính:
let obj = {name: 'Dave', age: 30, favoriteColor: 'blue'};
let objCopy = Object.assign({}, obj, {coder: true, favoriteColor: 'red'});
console.log(obj); // { name: 'Dave', age: 30, favoriteColor: 'blue' }
console.log(objCopy); // { name: 'Dave', age: 30, favoriteColor: 'red', coder: true }
Phương pháp giá trị đối tượng
Các Object.values()
phương thức lấy một đối tượng làm tham số và trả về một mảng các giá trị của nó. Điều này làm cho nó hữu ích cho chuỗi với phổ biến Array
phương pháp như .map()
, .forEach()
và .reduce()
.
cú pháp
Object.values(targetObject);
Giá trị trả về
Một mảng của đối tượng đã truyền (targetObject
) các giá trị.
ví dụ
const obj = {
firstName: 'Quincy',
lastName: 'Larson'
}
const values = Object.values(obj);
console.log(values); // ["Quincy", "Larson"]
Nếu đối tượng bạn đang chuyển có số làm khóa, thì Object.value()
sẽ trả về các giá trị theo thứ tự số của các phím:
const obj1 = { 0: 'first', 1: 'second', 2: 'third' };
const obj2 = { 100: 'apple', 12: 'banana', 29: 'pear' };
console.log(Object.values(obj1)); // ["first", "second", "third"]
console.log(Object.values(obj2)); // ["banana", "pear", "apple"]
Nếu một cái gì đó không phải là một đối tượng được chuyển đến Object.values()
nó sẽ được ép buộc vào một đối tượng trước khi được trả về dưới dạng một mảng:
const str="hello";
console.log(Object.values(str)); // ["h", "e", "l", "l", "o"]
Phương thức hasOwnProperty đối tượng
Các Object.hasOwnProperty()
phương thức trả về một boolean cho biết đối tượng có sở hữu thuộc tính đã chỉ định hay không.
Đây là một phương pháp thuận tiện để kiểm tra xem một đối tượng có thuộc tính được chỉ định hay không vì nó trả về true/false tương ứng.
cú pháp
Object.hasOwnProperty(prop)
Giá trị trả về
true
// or
false
ví dụ
sử dụng Object.hasOwnProperty()
để kiểm tra xem một thuộc tính có tồn tại hay không trong một đối tượng nhất định:
const course = {
name: 'freeCodeCamp',
feature: 'is awesome',
}
const student = {
name: 'enthusiastic student',
}
course.hasOwnProperty('name'); // returns true
course.hasOwnProperty('feature'); // returns true
student.hasOwnProperty('name'); // returns true
student.hasOwnProperty('feature'); // returns false
Phương thức getOwnPropertyNames đối tượng
Các Object.getOwnPropertyNames()
phương thức lấy một đối tượng làm tham số và trả về và mảng tất cả các thuộc tính của nó.
cú pháp
Object.getOwnPropertyNames(obj)
Giá trị trả về
Một mảng các chuỗi thuộc tính của đối tượng đã truyền.
ví dụ
const obj = { firstName: 'Quincy', lastName: 'Larson' }
console.log(Object.getOwnPropertyNames(obj)); // ["firstName", "lastName"]
Nếu một cái gì đó không phải là một đối tượng được chuyển đến Object.getOwnPropertyNames()
nó sẽ được ép buộc vào một đối tượng trước khi được trả về dưới dạng một mảng:
const arr = ['1', '2', '3'];
console.log(Object.getOwnPropertyNames(arr)); // ["0", "1", "2", "length"]
Promise.prototype.then
Một Promise.prototype.then
hàm chấp nhận hai đối số và trả về một Lời hứa.
Đối số đầu tiên là một hàm bắt buộc chấp nhận một đối số. Thực hiện thành công một Lời hứa sẽ kích hoạt chức năng này.
Đối số thứ hai là một hàm tùy chọn cũng chấp nhận một đối số của chính nó. Lỗi bị ném hoặc Từ chối lời hứa sẽ kích hoạt chức năng này.
function onResolved (resolvedValue) {
/*
* access to resolved values of promise
*/
}
function onRejected(rejectedReason) {
/*
* access to rejection reasons of promise
*/
}
promiseReturningFunction(paramList)
.then( // then function
onResolved,
[onRejected]
);
Promise.prototype.then
cho phép bạn thực hiện nhiều hoạt động không đồng bộ theo trình tự. Bạn làm điều này bằng cách đính kèm một then
chức năng này sang chức năng khác được phân tách bằng toán tử dấu chấm.
promiseReturningFunction(paramList)
.then( // first then function
function(arg1) {
// ...
return someValue;
}
)
...
.then( // nth then function
function(arg2) {
// ...
return otherValue;
}
)
Map.prototype.entries
Trả về một cái mới Iterator
đối tượng chứa [key, value]
cặp cho mỗi phần tử trong Map
đối tượng theo thứ tự chèn.
cú pháp
myMap.entries()
Ví dụ
const myMap = new Map();
myMap.set('foo',1);
myMap.set('bar',2);
myMap.set('baz',3);
var iterator = myMap.entries();
console.log(iterator.next().value); // ['foo', 1]
console.log(iterator.next().value); // ['bar', 2]
console.log(iterator.next().value); // ['baz', 3]