+1

Ví dụ về phương thức đối tượng JavaScript từ cơ bản đến nâng cao

JavaScript cung cấp một loạt các phương thức đối tượng mạnh mẽ giúp thao tác và quản lý dữ liệu hiệu quả. Bài viết này sẽ đi sâu vào chi tiết từng phương thức, từ những thao tác cơ bản như lấy key và value đến các kỹ thuật nâng cao như định nghĩa và kiểm soát thuộc tính.

1. Object.keys(obj):

Trả về một mảng các tên thuộc tính có thể liệt kê được của đối tượng (khóa).

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 các giá trị thuộc tính có thể liệt kê của đối tượng.

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

3. Object.entries(obj):

Trả về một mảng các cặp thuộc tính [key, value] có thể liệt kê được theo chuỗi của đối tượng.

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 được niêm phong, nếu không thì trả về false.

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

5. Object.assign(target, source):

Sao chép các giá trị của tất cả các thuộc tính có thể liệt kê từ một hoặc nhiều đối tượng nguồn đến một đối tượng đích. Nó trả về đối tượng đích.

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 chặn việc thêm thuộc tính mới hoặc xóa hoặc cấu hình lại các thuộc tính hiện có.

const obj = { name: 'Khabib' };
Object.freeze(obj);
obj.name = 'Bob'; // This won't change the value
console.log(obj.name); // Output: 'Khabib'

7. Object.seal(obj):

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

const obj = { name: 'Alice' };
Object.seal(obj);
obj.name = 'Bob'; // This will update the value
obj.age = 25; // This won't add a new property
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.

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ực tiếp trên đối tượng hoặc sửa đổi thuộc tính hiện có.

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 một đối tượng.

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 hay không (tức là có thể thêm thuộc tính mới hay không).

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 (tức là không thể mở rộng và tất cả các thuộc tính đều không thể ghi).

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 chỉ định có thuộc tính được chỉ định làm thuộc tính riêng của nó, ngay cả khi giá trị của thuộc tính đó không được xác định.

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 của đối tượng đó hay không và không được kế thừa thông qua chuỗi nguyên mẫu.

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 các thuộc tính mới được thêm vào đối tượng.

const obj = {};
Object.preventExtensions(obj);
obj.name = 'Khabib'; // Won't be added
console.log(obj); // {}

16. Object.setPrototypeOf(obj, proto):

Đặt nguyên mẫu (thuộc tính [[Prototype]] bên trong) của một đối tượng được chỉ định.

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.

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 (thuộc tính [[Prototype]] bên trong) của đối tượng được chỉ định.

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.

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 một đối tượng nhất định.

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 được tìm thấy trên đối tượng (bao gồm cả các thuộc tính không thể liệt kê).

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

22. Object.is(value1, value2):

So sánh xem hai giá trị có giống nhau không.

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.

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 các bạn thấy thông tin trong bài là hữu ích.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí