2015-08-26 4 views
5

Ich debate zwischen JavaScript Object.hasOwnProperty(propName) und lodash _.has(obj, proName) Funktion, um festzustellen, ob ein Objekt eine Eigenschaft hat.JavaScript object.hasOwnProperty (proName) vs lodash _.has (obj, proName) Funktion

Was ist effizienter für einfache Fälle? Für komplexe Fälle? Für alle Fälle?

Gibt es eine bessere Bibliothek, die ich nicht erwähnt habe?

Danke!

+0

Was für ein Objekt ein komplexer Fall der Überprüfung einer Immobilie sein würde? – Pointy

+0

Ich denke, ich beziehe mich auf verschachtelte Fälle. – esanz91

+1

Sie können immer ihre eigene Methode überprüfen und sehen, ob sie Ihren Anforderungen entspricht, oder Sie könnten mit weniger tun: https://github.com/lodash/lodash/blob/3.2.1-npm-packages/lodash.has/index. js – juvian

Antwort

8

Nun die Lodash _.has() Methode ist nur ein Anruf an Object.prototype.hasOwnProperty() nach einer Überprüfung für ein Null-Argument. Der Code greift eine Referenz früh:

var hasOwnProperty = Object.prototype.hasOwnProperty; 

und dann _.has(object, prop) sieht aus wie

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

Es wird erwartet, Prop als 'prop', wenn Sie Eigentum direkt übergeben. – Rikin

+0

Dies ist angeblich bessere Praxis b/c die tatsächliche hasOwnProperty des Objekts könnte beschattet werden, und der Fall, wo es ein Null-Objekt (Object.create (null)) ist. –