Reflect.preventExtensions()

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.preventExtensions() giống như Object.preventExtensions(). Nó ngăn việc thêm thuộc tính mới vào một đối tượng (tức là ngăn các mở rộng trong tương lai cho đối tượng).

Try it

const object = {};

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

Reflect.preventExtensions(object);

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

Cú pháp

js
Reflect.preventExtensions(target)

Tham số

target

Đối tượng target cần ngăn mở rộng.

Giá trị trả về

Một Boolean cho biết target có được đặt thành ngăn mở rộng thành cô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.preventExtensions() cung cấp ngữ nghĩa phản chiếu của việc ngăn mở rộng một đối tượng. Sự khác biệt với Object.preventExtensions() là:

  • Reflect.preventExtensions() ném ra TypeError nếu target không phải là đối tượng, trong khi Object.preventExtensions() luôn trả về các target không phải đối tượng như vốn có.
  • Reflect.preventExtensions() trả về một Boolean cho biết target có được đặt thành ngăn mở rộng thành công hay không, trong khi Object.preventExtensions() trả về đối tượng target.

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

Ví dụ

Sử dụng Reflect.preventExtensions()

Xem thêm Object.preventExtensions().

js
// Objects are extensible by default.
const empty = {};
Reflect.isExtensible(empty); // true

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

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

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.preventExtensions(), target không phải đối tượng sẽ được trả về như vốn có mà không có bất kỳ lỗi nào.

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

Object.preventExtensions(1);
// 1

Đặc tả kỹ thuật

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

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

Xem thêm