Test các đặc tính object Javascript (phần 2)

Test các đặc tính object Javascript (tiếp tục)

propertyIsEnumerable() tinh chỉnh hasOwnProperty() test. Nó trả về true chỉ nếu đặc tính được đặt tên là một đặc
tính bản thân và thuộc tính lặp qua được của nó là true. Các đặc tính tích hợp nhất định là không lặp qua được. Các đặc
tính tạo bởi Javascript code thông thường là lặp qua được trừ phi bạn đã sử dụng một trong những kĩ thuật thể hiện
ở các học phần sau để làm chúng không lặp qua được.

let o = { x: 1 };
o.propertyIsEnumerable(“x”) // => true: o has an own enumerable property x
o.propertyIsEnumerable(“toString”) // => false: not an own property
Object.prototype.propertyIsEnumerable(“toString”) // => false: not enumerable

Thay vì sử dụng toán tử in, nó thường là đủ để đơn giản truy vấn đặc tính và sử dụng !== để đảm bảo nó là undefined:

let o = { x: 1 };
o.x !== undefined // => true: o has a property x
o.y !== undefined // => false: o doesn’t have a property y
o.toString !== undefined // => true: o inherits a toString property

Có một thứ toán tử in có thể làm cái kĩ thuật truy cập đặc tính đơn giản thể hiện ở đây không thể làm. in có thể
phân biệt giữa các đặc tính cái không tồn tại và các đặc tính cái tồn tại nhưng đã được thiết lập thành undefined.
Xem xét code này:

let o = { x: undefined }; // Property is explicitly set to undefined
o.x !== undefined // => false: property exists but is undefined
o.y !== undefined // => false: property doesn’t even exist
“x” in o // => true: the property exists
“y” in o // => false: the property doesn’t exist
delete o.x; // Delete the property x
“x” in o // => false: it doesn’t exist anymore

Chia sẻ