Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tầm quan trọng của thuộc tính enumerable khi định nghĩa thuộc tính trong đối tượng JavaScript

Chúng ta có thể định nghĩa thuộc tính của một đối tượng bằng cách sử dụng ký pháp Dot (chấm) và Bracket (ngoặc vuông). Còn có một cách khác là sử dụng Object.defineProperty() để định nghĩa thuộc tính. Phương thức này thường nhận 3 tham số: tên đối tượng, tên thuộc tính và bộ mô tả thuộc tính (property descriptor).

Cú pháp

Object.defineProperty(tên_đối_tượng, tên_thuộc_tính, bộ_mô_tả_thuộc_tính)

Hãy định nghĩa một thuộc tính bằng phương thức này.

Ví dụ

Trong ví dụ sau, ban đầu đối tượng chỉ có một thuộc tính tên là 'one'. Sau đó, thêm một thuộc tính tên là 'two'. Khi cố gắng hiển thị tất cả các thuộc tính, chỉ có thuộc tính đầu tiên được hiển thị, thuộc tính vừa thêm không xuất hiện như trong kết quả đầu ra.

<html> <body> <script> 
    var object = {one: 1}; 
    Object.defineProperty( 
        object, 
        'two', { 
            value: 2 
        } 
    ); 
    document.write(JSON.stringify(object)); 
</script> </body> </html>

Kết quả

{"one":1}

Điều này xảy ra do thuộc tính "enumerable". Thuộc tính "enumerable" phải là true để thuộc tính xuất hiện khi liệt kê (ví dụ: trong JSON.stringify, vòng lặp for...in, Object.keys()). Khi không khai báo, "enumerable" mặc định mang giá trị false. Do đó, để đặt giá trị là true, chúng ta phải khai báo rõ ràng "enumerable" và gán giá trị true cho nó.

Trong ví dụ sau, khi "enumerable" được khởi tạo và gán giá trị true, tất cả các thuộc tính đều được hiển thị như trong kết quả đầu ra.

Ví dụ

<html> <body> <script> 
    var object = {one: 1}; 
    Object.defineProperty( 
        object, 
        'two', { 
            value: 2, 
            enumerable: true 
        } 
    ); 
    document.write(JSON.stringify(object)); 
</script> </body> </html>

Kết quả

{"one":1,"two":2}