Static Methods
Trong JS tồn tại một lớp đối tượng xây dựng sẵn gọi là Object. Lớp đối tượng này cung cấp nhiều hàm hữu ích để làm việc với các JS Objects.
Xét đối tượng person sau:
const person = {
name: "Quân",
age: 21,
address: {
street: "pink",
ward: "scarlet",
district: "rose",
city: "crimson",
},
}Object.assign
Sao chép đối tượng mà không thay đổi đối tượng gốc:
// From one source object
const clonedPerson = Object.assign({}, person)
console.log(clonedPerson) // {name: "Quân", age: 21, address: Object}Sao chép từ nhiều đối tượng nguồn:
// From many source object
const personExtraInfo = {
nation: "galaxy",
isMarried: false,
school: "HCMUS",
}
const clonedPersonWithExtraInfo = Object.assign({}, person, personExtraInfo)
console.log(clonedPersonWithExtraInfo) // {name: "Quân", age: 21, address: Object, nation: "galaxy", isMarried: false…}Object.keys
Lấy mọi key của thuộc tính hoặc phương thức có trong đối tượng.
console.log(Object.keys(person)) // ['name', 'age', 'address']
console.log(Object.keys(person.address)) // ['street', 'ward', 'district', 'city']Object.values
Lấy giá trị của đối tượng và cho vào mảng.
console.log(Object.values(person)) // ["Quân", 21, Object]Object.entries
Lấy các cặp key-value và cho vào mảng. Nói cách khác, chuyển object thành một mảng hai chiều gồm n dòng (tương ứng với n thuộc tính) và 2 cột (key và value).
console.log(Object.entries(person)) // [Array(2), Array(2), Array(2)]Object.is
Giúp so sánh hai giá trị với nhau.
const obj = {}
console.log(Object.is(obj, {}))
// Expected output: falseTrong ví dụ trên, do object là reference data type nên dù hai object có cùng giá trị nhưng sẽ luôn khác nhau do khác tham chiếu1.
Phương thức Object.is khác toán tử == ở chỗ nó không ép kiểu dữ liệu của hai toán hạng trước khi thực hiện so sánh:
console.log(Object.is("1", 1))
// Expected output: falsePhương thức Object.is cũng khác toán tử === vì nó:
- Không xem số 0 dương và số 0 âm là bằng nhau.
- Xem hai đối tượng
NaNlà bằng nhau.
console.log(Object.is(-0, 0))
// Expected output: false
console.log(Object.is(NaN, NaN))
// Expected output: trueInstance Methods
Các phương thức này có sẵn ở mọi đối tượng, kể cả các user-defined object.
hasOwnProperty
Kiểm tra thuộc tính key có tồn tại trong đối tượng hay không.
console.log(person.hasOwnProperty("isMarried")) // false
console.log(person.hasOwnProperty("age")) // trueResources
Footnotes
-
xem thêm JS Data Types. ↩