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

Kiểm tra khóa có tồn tại trong đối tượng JavaScript

Chúng ta cần minh họa cách đúng để kiểm tra xem một khóa cụ thể có tồn tại trong đối tượng hay không. Trước khi đi đến cách đúng, hãy xem xét một cách sai và hiểu tại sao nó sai.

Cách 1: Kiểm tra giá trị undefined (cách sai)

Do bản chất động của JavaScript, ta có thể muốn kiểm tra sự tồn tại của khóa như sau:

const obj = { name: 'Rahul' };
if(!obj['fName']){}

hoặc

if(obj['fName'] === undefined){}

Cả hai cách này đều sai. Tại sao?

Vì trong trường hợp này không có khóa 'fName', nhưng giả sử tồn tại khóa 'fName' bị gán giá trị false hoặc undefined عمداً. Hàm sẽ trả về khóa không tồn tại nhưng thực tế khóa đó có tồn tại. Do đó cách này thất bại trong các trường hợp như vậy.

Cách 2: Sử dụng toán tử in (Cách đúng)

Từ khóa in được giới thiệu trong ES6 kiểm tra sự tồn tại của mục trong đối tượng lặp lại. Do đó, để kiểm tra khóa, ta làm như sau:

('fName' in obj);

Cách 3: Sử dụng phương thức hasOwnProperty() (Cách đúng)

Sử dụng Object.prototype.hasOwnProperty() để xác định đối tượng có chứa khóa hay không.

Cú pháp:

obj.hasOwnProperty('fName');

Khác biệt giữa Cách 2 và Cách 3 là Cách 3 chỉ kiểm tra thuộc tính của instance Object được gọi, trong khi in kiểm tra cả thuộc tính instance và thuộc tính kế thừa (nếu có).