Trong JavaScript, hàm .hasOwnProperty() là một hàm của đối tượng Object. Nó kiểm tra xem đối tượng có chứa một thuộc tính cụ thể hay không. Nó trả về true nếu thuộc tính tồn tại trong đối tượng và false nếu không tồn tại. Hàm nhận một chuỗi làm tham số, chuỗi đó là tên thuộc tính cần kiểm tra.
Các bài viết liên quan:
Ví dụ:
let person = { name: "John", age: 30 }; console.log(person.hasOwnProperty("name")); // true console.log(person.hasOwnProperty("gender")); // false
Trong ví dụ trên, hàm hasOwnProperty sẽ kiểm tra xem đối tượng person có chứa thuộc tính “name” hay không. Kết quả trả về là true, vì thuộc tính “name” là một thuộc tính của đối tượng person.
Tại sao nên sử dụng hasOwnProperty() ?
Sử dụng hàm hasOwnProperty() trong JavaScript có nhiều lý do tại sao nên dùng nó:
- Kiểm tra tính hợp lệ: Khi bạn muốn kiểm tra xem một thuộc tính có tồn tại trong một đối tượng hay không, hàm hasOwnProperty() là cách dễ dàng và chính xác nhất để làm điều đó.
- Tránh lỗi: Sử dụng hasOwnProperty() có thể giúp tránh lỗi trong trường hợp đối tượng có thể kế thừa từ các đối tượng khác và có thể có các thuộc tính từ đó, nếu sử dụng in hoặc . sẽ tìm thấy các thuộc tính đó có thể gây ra lỗi.
- Hiệu quả: Hàm hasOwnProperty() chỉ kiểm tra thuộc tính trong đối tượng hiện tại, nó không kiểm tra thuộc tính trên đối tượng cha hoặc đối tượng cha của cha nên nó sẽ chạy nhanh hơn so với các phương thức khác.
- Tính chất định nghĩa: Hàm hasOwnProperty() chỉ kiểm tra các thuộc tính có được khai báo trong đối tượng hiện tại, nó không kiểm tra các thuộc tính được kế thừa từ prototype, nó cho phép bạn xác định rõ hơn về các thuộc tính cụ thể của đối tượng và có thể giúp tránh nhầm lẫn trong trường hợp đối tượng có thể kế thừa từ prototype.
- Tái sử dụng mã: Khi bạn sử dụng hàm hasOwnProperty() để kiểm tra tính hợp lệ của thuộc tính, bạn có thể tái sử dụng mã đó cho các đối tượng khác và giảm thiểu sự nhầm lẫn.
Nói chung, sử dụng hàm hasOwnProperty() trong JavaScript là một khái niệm tốt để đảm bảo rằng mã của bạn là chính xác, hiệu quả và dễ dàng tái sử dụng.
Sử dụng hasOwnProperty()trong JavaScript như thế nào ?
Sử dụng hàm hasOwnProperty() trong JavaScript rất đơn giản, bạn chỉ cần gọi hàm này trên một đối tượng và truyền vào tên thuộc tính cần kiểm tra. Ví dụ:
let person = { name: "John", age: 30 }; console.log(person.hasOwnProperty("name")); // true console.log(person.hasOwnProperty("gender")); // false
Trong ví dụ trên, chúng ta gọi hàm hasOwnProperty() trên đối tượng person và truyền vào tên thuộc tính “name” và “gender” để kiểm tra. Kết quả trả về là true cho “name” và false cho “gender” vì thuộc tính “name” tồn tại trong đối tượng person nhưng “gender” không tồn tại.
Bạn cũng có thể sử dụng hasOwnProperty() để kiểm tra một thuộc tính có tồn tại trong một object
let obj = { foo: 'bar', baz: 42 }; console.log(obj.hasOwnProperty('foo')); // true console.log(obj.hasOwnProperty('baz')); // true console.log(obj.hasOwnProperty('qux')); // false
Bạn có thể sử dụng nó trong một vòng lặp để kiểm tra tất cả các thuộc tính của đối tượng.
let obj = { foo: 'bar', baz: 42 }; for (let property in obj) { if (obj.hasOwnProperty(property)) { console.log(property); } }
Kết quả sẽ in ra “foo” và “baz” vì chúng là thuộc tính của obj.
Những lưu ý khi sử dụng hasownproperty trong JavaScript ?
- Chỉ kiểm tra thuộc tính cụ thể: Hàm hasOwnProperty() chỉ kiểm tra thuộc tính cụ thể của đối tượng, nó không kiểm tra thuộc tính được kế thừa từ prototype hoặc đối tượng cha.
- Chỉ sử dụng với đối tượng: Hàm hasOwnProperty() chỉ được sử dụng trên đối tượng, nếu sử dụng trên một kiểu dữ liệu khác như số, chuỗi, boolean sẽ gây lỗi.
- Chú ý tên thuộc tính: Tên thuộc tính truyền vào hàm hasOwnProperty() phải là một chuỗi, nếu truyền vào một biến hoặc một thuộc tính không tồn tại sẽ gây ra lỗi.
- Sử dụng với in: Khi sử dụng in để kiểm tra thuộc tính, nó cũng sẽ kiểm tra thuộc tính được kế thừa từ prototype, nên nếu muốn chắc chắn rằng thuộc tính là của đối tượng chính thì nên sử dụng hasOwnProperty().
- Sử dụng với Object.keys(): Khi sử dụng Object.keys() để lấy danh sách các thuộc tính của đối tượng, nó sẽ chỉ trả về các thuộc tính cục bộ của đối tượng, nó không bao gồm các thuộc tính được kế thừa từ prototype, nên nếu muốn lấy tất cả các thuộc tính của đối tượng, bạn nên sử dụng Object.getOwnPropertyNames().
- Sử dụng với for…in: Khi sử dụng vòng lặp for…in để duyệt qua tất cả các thuộc tính của đối tượng, nó sẽ bao gồm cả các thuộc tính được kế thừa từ prototype, nên nếu muốn chỉ duyệt qua các thuộc tính cục bộ của đối tượng, bạn nên sử dụng for…in và sử dụng hasOwnProperty() để kiểm tra xem thuộc tính đó có phải là thuộc tính cục bộ của đối tượng hay không trước khi sử dụng nó.
- Sử dụng với kiểu dữ liệu khác : Hàm hasOwnProperty() chỉ được sử dụng trên đối tượng, nếu sử dụng trên kiểu dữ liệu khác như số, chuỗi, boolean sẽ gây lỗi.
- Chú ý tên thuộc tính: Tên thuộc tính truyền vào hàm hasOwnProperty() phải là một chuỗi, nếu truyền vào một biến hoặc một thuộc tính không tồn tại sẽ gây ra lỗi.
- Sử dụng với arrow function: Hàm hasOwnProperty() không nằm trong scope của arrow function, nếu muốn sử dụng trong arrow function thì cần sử dụng this hoặc bind.
- Chú ý sử dụng với các object có thể null hoặc undefined: Khi sử dụng hasOwnProperty() trên các object có thể null hoặc undefined sẽ gây lỗi, nên cần kiểm tra trước khi sử dụng.
Ví dụ các trường hợp sử dụng hasOwnProperty()trong JavaScript ?
- Kiểm tra tính hợp lệ của thuộc tính trước khi sử dụng:
let person = { name: "John", age: 30 }; if (person.hasOwnProperty("name")) { console.log(person.name); } else { console.log("Invalid property name"); }
- Kiểm tra một thuộc tính có tồn tại trong một object:
let obj = { foo: 'bar', baz: 42 }; if (obj.hasOwnProperty('foo')) { console.log(obj.foo); } else { console.log("property 'foo' not exist"); }
- Duyệt qua tất cả các thuộc tính của đối tượng:
let obj = { foo: 'bar', baz: 42 }; for (let property in obj) { if (obj.hasOwnProperty(property)) { console.log(property + ": " + obj[property]); } }
- Kiểm tra một thuộc tính có tồn tại trong một object và gán giá trị mặc định nếu không tồn tại:
let obj = { foo: 'bar', baz: 42 }; let value = obj.hasOwnProperty('qux') ? obj.qux : 'default value'; console.log(value);
- Sử dụng với arrow function
let obj = { foo: 'bar', baz: 42 }; let checkProp = (prop) => obj.hasOwnProperty(prop); console.log(checkProp('foo')); console.log(checkProp('qux'));
Các ví dụ trên chỉ là một số ví dụ thông dụng về cách sử dụng hàm hasOwnProperty() trong JavaScript, có thể có nhiều cách khác để sử dụng nó tùy vào tình huống cụ thể.
Kết luận
Hàm hasOwnProperty() là một hàm quan trọng trong JavaScript, nó cho phép kiểm tra xem một thuộc tính cụ thể có tồn tại trong một đối tượng hay không. Nó rất hữu ích trong các trường hợp như kiểm tra tính hợp lệ của thuộc tính trước khi sử dụng, duyệt qua tất cả các thuộc tính của đối tượng, và gán giá trị mặc định nếu thuộc tính không tồn tại.
Tuy nhiên, khi sử dụng hasOwnProperty() cần chú ý đến những lưu ý như chỉ kiểm tra thuộc tính cụ thể, chỉ sử dụng với đối tượng, chú ý tên thuộc tính và kiểm tra trước khi sử dụng với các object có thể null hoặc undefined.