Reflect.isExtensible()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.

Phương thức tĩnh Reflect.isExtensible() giống như Object.isExtensible(). Nó xác định xem một đối tượng có thể mở rộng (có thể thêm thuộc tính mới vào nó hay không).

Try it

const object1 = {};

console.log(Reflect.isExtensible(object1));
// Expected output: true

Reflect.preventExtensions(object1);

console.log(Reflect.isExtensible(object1));
// Expected output: false

const object2 = Object.seal({});

console.log(Reflect.isExtensible(object2));
// Expected output: false

Cú pháp

js
Reflect.isExtensible(target)

Tham số

target

Đối tượng target cần kiểm tra xem có thể mở rộng không.

Giá trị trả về

Một Boolean cho biết target có thể mở rộng hay không.

Ngoại lệ

TypeError

Được ném ra nếu target không phải là đối tượng.

Mô tả

Reflect.isExtensible() cung cấp ngữ nghĩa phản chiếu của việc kiểm tra xem một đối tượng có thể mở rộng hay không. Sự khác biệt duy nhất với Object.isExtensible() là cách xử lý các target không phải đối tượng. Reflect.isExtensible() ném ra TypeError nếu target không phải là đối tượng, trong khi Object.isExtensible() luôn trả về false cho các target không phải đối tượng.

Reflect.isExtensible() gọi phương thức nội tại [[IsExtensible]] của đối tượng trên target.

Ví dụ

Sử dụng Reflect.isExtensible()

Xem thêm Object.isExtensible().

js
// New objects are extensible.
const empty = {};
Reflect.isExtensible(empty); // true

// … but that can be changed.
Reflect.preventExtensions(empty);
Reflect.isExtensible(empty); // false

// Sealed objects are by definition non-extensible.
const sealed = Object.seal({});
Reflect.isExtensible(sealed); // false

// Frozen objects are also by definition non-extensible.
const frozen = Object.freeze({});
Reflect.isExtensible(frozen); // false

Khác biệt với Object.isExtensible()

Nếu đối số target cho phương thức này không phải là đối tượng (một giá trị nguyên thủy), thì nó sẽ gây ra TypeError. Với Object.isExtensible(), target không phải đối tượng sẽ trả về false mà không có bất kỳ lỗi nào.

js
Reflect.isExtensible(1);
// TypeError: 1 is not an object

Object.isExtensible(1);
// false

Đặc tả kỹ thuật

Specification
ECMAScript® 2027 Language Specification
# sec-reflect.isextensible

Tương thích trình duyệt

Xem thêm