0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Các Phương Thức Đối Tượng JavaScript: Hướng Dẫn Từ Cơ Bản Đến Nâng Cao

Đăng vào 3 tháng trước

• 5 phút đọc

Chủ đề:

Javascript

Các Phương Thức Đối Tượng JavaScript: Hướng Dẫn Từ Cơ Bản Đến Nâng Cao

JavaScript mang đến nhiều phương thức đối tượng mạnh mẽ, cho phép lập trình viên thao tác và quản lý dữ liệu một cách hiệu quả. Trong bài viết này, chúng tôi sẽ khám phá chi tiết từng phương thức, từ những thao tác cơ bản như lấy key, value, đến các kỹ thuật nâng cao như định nghĩa và kiểm soát thuộc tính. Dưới đây là danh sách 23 phương thức chính của đối tượng JavaScript mà bạn nên biết:

1. Object.keys(obj)

Phương thức này trả về một mảng chứa tên các thuộc tính có thể liệt kê được của đối tượng (khóa).

javascript Copy
const obj = { a: 1, b: 2, c: 3 };  
console.log(Object.keys(obj));  
// Output: ['a', 'b', 'c']

2. Object.values(obj)

Trả về một mảng chứa các giá trị thuộc tính có thể liệt kê của đối tượng.

javascript Copy
const obj = { a: 1, b: 2, c: 3 };  
console.log(Object.values(obj));  
// Output: [1, 2, 3]

3. Object.entries(obj)

Phương thức này trả về một mảng chứa các cặp thuộc tính [key, value] có thể liệt kê được theo thứ tự của đối tượng.

javascript Copy
const obj = { a: 1, b: 2, c: 3 };  
console.log(Object.entries(obj));  
// Output: [['a', 1], ['b', 2], ['c', 3]]

4. Object.isSealed(obj)

Trả về true nếu đối tượng đã bị niêm phong, ngược lại trả về false.

javascript Copy
const obj = Object.seal({ a: 1 });  
console.log(Object.isSealed(obj));  
// Output: true

5. Object.assign(target, source)

Phương thức này sao chép tất cả các giá trị của các thuộc tính từ một hoặc nhiều đối tượng nguồn sang một đối tượng đích và trả về đối tượng đích.

javascript Copy
const target = { a: 1 };  
const source = { b: 2, c: 3 };  
const result = Object.assign(target, source);  
console.log(result);  
// Output: { a: 1, b: 2, c: 3 }

6. Object.freeze(obj)

Đóng băng một đối tượng, ngăn cản việc thêm thuộc tính mới hoặc xóa và cấu hình lại các thuộc tính đã tồn tại.

javascript Copy
const obj = { name: 'Khabib' };  
Object.freeze(obj);  
obj.name = 'Bob'; // Điều này sẽ không thay đổi giá trị  
console.log(obj.name); // Output: 'Khabib'

7. Object.seal(obj)

Niêm phong một đối tượng, cho phép sửa đổi các thuộc tính hiện có nhưng ngăn cản việc thêm mới.

javascript Copy
const obj = { name: 'Alice' };  
Object.seal(obj);  
obj.name = 'Bob'; // Giá trị sẽ được cập nhật  
obj.age = 25; // Điều này sẽ không thêm thuộc tính mới  
console.log(obj); // Output: { name: 'Bob' }

8. Object.create(proto)

Tạo một đối tượng mới với đối tượng nguyên mẫu và các thuộc tính được chỉ định.

javascript Copy
const person = { greet() {console.log('Hello!');}};  
const student = Object.create(person);  
student.greet();  
// Output: 'Hello!'

9. Object.defineProperty(obj, prop, descriptor)

Xác định thuộc tính mới trên đối tượng hoặc sửa đổi thuộc tính hiện có.

javascript Copy
const obj = {};  
Object.defineProperty(obj, 'name', { value: 'Alice', writable: false });  
console.log(obj.name); // 'Alice'

10. Object.defineProperties(obj, props)

Xác định nhiều thuộc tính mới hoặc sửa đổi các thuộc tính hiện có trên đối tượng.

javascript Copy
const obj = {};  
Object.defineProperties(obj, {  
  name: { value: 'Cormier', writable: false },  
  age: { value: 30, writable: true }  
});  
console.log(obj.name); // 'Cormier'

11. Object.isExtensible(obj)

Xác định xem một đối tượng có thể mở rộng để thêm thuộc tính mới hay không.

javascript Copy
const obj = {};  
console.log(Object.isExtensible(obj)); // true  
Object.preventExtensions(obj);  
console.log(Object.isExtensible(obj)); // false

12. Object.isFrozen(obj)

Xác định xem một đối tượng có bị đóng băng hay không (không thể mở rộng và tất cả các thuộc tính đều không thể ghi).

javascript Copy
const obj = Object.freeze({ name: 'Gregor' });  
console.log(Object.isFrozen(obj));  
// Output: true

13. Object.hasOwn(obj, prop)

Trả về true nếu đối tượng có thuộc tính chỉ định làm thuộc tính riêng của nó.

javascript Copy
const obj = { name: 'Alice' };  
console.log(Object.hasOwn(obj, 'name')); // true  
console.log(Object.hasOwn(obj, 'age')); // false

14. Object.hasOwnProperty(prop)

Xác định xem một đối tượng có chứa thuộc tính được chỉ định dưới dạng thuộc tính trực tiếp hay không.

javascript Copy
const obj = { name: 'Alice' };  
console.log(obj.hasOwnProperty('name')); // true  
console.log(obj.hasOwnProperty('age')); // false

15. Object.preventExtensions(obj)

Ngăn không cho thêm các thuộc tính mới vào đối tượng.

javascript Copy
const obj = {};  
Object.preventExtensions(obj);  
obj.name = 'Khabib'; // Không thể thêm  
console.log(obj); // {}

16. Object.setPrototypeOf(obj, proto)

Đặt nguyên mẫu của một đối tượng được chỉ định.

javascript Copy
const proto = { greet() {console.log('Hello!');}};  
const obj = {};  
Object.setPrototypeOf(obj, proto);  
obj.greet(); // 'Hello!'

17. Object.fromEntries(iterable)

Chuyển đổi danh sách các cặp khóa-giá trị thành một đối tượng.

javascript Copy
const entries = [['name', 'Rock'], ['age', 35]];  
const obj = Object.fromEntries(entries);  
console.log(obj); // { name: 'Rock', age: 35 }

18. Object.getPrototypeOf(obj)

Trả về nguyên mẫu của đối tượng được chỉ định.

javascript Copy
const obj = {};  
const proto = Object.getPrototypeOf(obj);  
console.log(proto === Object.prototype); // true

19. Object.getOwnPropertySymbols(obj)

Trả về một mảng chứa tất cả các thuộc tính ký hiệu được tìm thấy trên đối tượng.

javascript Copy
const symbol = Symbol('id');  
const obj = { [symbol]: 123 };  
const symbols = Object.getOwnPropertySymbols(obj);  
console.log(symbols); // [Symbol(id)]  
console.log(obj[symbols[0]]); // 123

20. Object.getOwnPropertyDescriptor(obj, prop)

Trả về mô tả thuộc tính cho một thuộc tính cụ thể của đối tượng.

javascript Copy
const obj = { name: 'Alice', age: 26 };  
const descriptor = Object.getOwnPropertyDescriptor(obj, 'name');  
console.log(descriptor);  
// Output: { configurable: true, enumerable: true, value: "Alice", writable: true }

21. Object.getOwnPropertyNames(obj)

Trả về một mảng chứa tất cả các thuộc tính trên đối tượng, bao gồm cả những thuộc tính không thể liệt kê.

javascript Copy
const obj = { name: 'Ferguson', age: 30 };  
const propertyNames = Object.getOwnPropertyNames(obj);  
console.log(propertyNames); // ['name', 'age']

22. Object.is(value1, value2)

So sánh hai giá trị để xem chúng có giống nhau hay không.

javascript Copy
console.log(Object.is('foo', 'foo')); // true  
console.log(Object.is({}, {})); // false

23. Object.getOwnPropertyDescriptors(obj)

Trả về tất cả các mô tả thuộc tính riêng của một đối tượng.

javascript Copy
const obj = { name: 'Khabib', age: 28 };  
const descriptors = Object.getOwnPropertyDescriptors(obj);  
console.log(descriptors);  
// Output: {
// age: {
//   configurable: true,
//   enumerable: true,
//   value: 28,
//   writable: true
// },
// name: {
//   configurable: true,
//   enumerable: true,
//   value: "Khabib",
//   writable: true
// }
// }

Hy vọng những thông tin trong bài viết này sẽ giúp bạn hiểu rõ hơn về các phương thức đối tượng trong JavaScript và ứng dụng của chúng trong lập trình.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào