2015-08-26 15 views
5

Bir nesnenin bir özelliğinin olup olmadığını belirlemek için JavaScript Object.hasOwnProperty(propName) ve lodash _.has(obj, proName) işlevini kullanmama arasında görüşüyorum.JavaScript object.hasOwnProperty (proName) vs lodash _.has (obj, proName) işlevi

Basit durumlar için hangisi daha etkilidir? Karmaşık durumlar için? Tüm durumlarda?

Daha önce bahsetmediğim bir kütüphane var mı?

Teşekkürler!

+0

benziyor? – Pointy

+0

Sanırım iç içe geçmiş vakalara başvuruyorum. – esanz91

+1

Her zaman kendi yöntemlerini kontrol edebilir ve gereksinimlerinize uyup uymadığını veya daha azıyla yapabileceğinizi görebilirsiniz: https://github.com/lodash/lodash/blob/3.2.1-npm-packages/lodash.has/index. js – juvian

cevap

8

Lodash _.has() yöntemi, null argüman için bir kontrol yaptıktan sonra Object.prototype.hasOwnProperty() numaralı arandır. kod erken bir başvuru kapar:

var hasOwnProperty = Object.prototype.hasOwnProperty; 

ve sonra _.has(object, prop) bir nesne üzerinde bir özelliğini kontrol karmaşık bir durum ne olurdu

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

Mülk doğrudan aktarıyorsanız, 'prop' olarak prop bekliyordur. – Rikin

+0

iddia edilen daha iyi bir uygulama b/c nesnenin gerçek hasOwnProperty gölgelenebilir ve null nesne (Object.create (null)) olduğu durumda. –