Ho un oggetto JavaScript personalizzato che creo con new
, e assegnare le proprietà a base di argomenti di creazione:Qual è il modo corretto di verificare l'esistenza di una proprietà su un oggetto JavaScript?
function MyObject(argument) {
if (argument) {
this.prop = "foo";
}
}
var objWithProp = new MyObject(true); // objWithProp.prop exists
var objWithoutProp = new MyObject(false); // objWithoutProp.prop does not exist
Qual è il modo corretto per verificare l'esistenza della prop
proprietà degli oggetti? Ho visto le seguenti modalità utilizzate, ma non sono sicuro se uno di questi modi è il modo migliore:
if (obj.prop) {}
if (obj.hasOwnProperty("prop")) {}
if ("prop" in obj) {}
In particolare, ho' m interessato solo a testare se la proprietà è definita esplicitamente per questo oggetto, non nella catena del prototipo. Inoltre, il valore non verrà mai impostato su null
o undefined
, ma potrebbe essere qualcosa come un oggetto o una matrice vuoti. Tuttavia, se vuoi includere quale sia la via corretta, se questo è il caso, sentiti libero.