2015-08-26 15 views
5

Tôi đang tranh luận giữa việc sử dụng JavaScript Object.hasOwnProperty(propName) và lodash _.has(obj, proName) để xác định xem đối tượng có thuộc tính hay không.JavaScript object.hasOwnProperty (proName) vs lodash _.has (obj, proName) function

Cách nào hiệu quả hơn cho các trường hợp đơn giản? Đối với trường hợp phức tạp? Đối với tất cả các trường hợp?

Có thư viện nào tốt hơn mà tôi chưa đề cập không?

Cảm ơn!

+0

Điều gì sẽ là một trường hợp phức tạp của việc kiểm tra một tài sản trên một đối tượng? – Pointy

+0

Tôi đoán tôi đang đề cập đến các trường hợp lồng nhau. – esanz91

+1

Bạn luôn có thể kiểm tra phương pháp của riêng mình và xem liệu nó có phù hợp với nhu cầu của bạn hoặc bạn có thể thực hiện với ít hơn: https://github.com/lodash/lodash/blob/3.2.1-npm-packages/lodash.has/index. js – juvian

Trả lời

8

Phương thức Lodash _.has() chỉ là một cuộc gọi đến Object.prototype.hasOwnProperty() sau khi kiểm tra đối số rỗng. Mã này lấy một tham chiếu từ rất sớm:

var hasOwnProperty = Object.prototype.hasOwnProperty; 

và sau đó _.has(object, prop) trông giống như

return object != null && hasOwnProperty.call(object, prop); 
+0

Đó là mong đợi prop là 'prop' nếu bạn đang đi qua tài sản trực tiếp. – Rikin

+0

điều này được cho là thực hành tốt hơn b/c hasOwnProperty thực tế của đối tượng có thể bị che khuất, và trường hợp nó là một đối tượng null (Object.create (null)). –

Các vấn đề liên quan