Mi sembra che ci sono quattro modi diversi è possibile determinare se un determinato oggetto (ad esempio foo
) ha una data proprietà (ad esempio bar
) definiti:JavaScript: è stato definito un membro?
if (foo.hasOwnProperty(bar)) {
if ('bar' in foo) {
if (typeof foo.bar !== 'undefined') {
if (foo.bar === undefined) {
Per determinare se esiste un il nome "bar
" nell'oggetto foo
, sono tutte e tre le istruzioni equivalenti? C'è qualche semantica sublime che non conosco che rende diverse queste tre affermazioni?
da segnalare che, a meno che qualcuno ha sovrascritto la variabile globale 'undefined', 3 può essere fatto anche come' se (foo.bar == non definito) {'. – Domenic