26 Stimmen

Was ist der richtige Weg, um das Vorhandensein einer Eigenschaft auf einem JavaScript-Objekt zu testen?

Ich habe ein benutzerdefiniertes Javascript-Objekt, das ich mit new und ordnen Sie Eigenschaften auf der Grundlage von Erstellungsargumenten zu:

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

Wie testet man richtig auf das Vorhandensein der prop Eigenschaft der Objekte? Ich habe gesehen, die folgenden Möglichkeiten verwendet, aber ich bin nicht sicher, ob eine dieser Möglichkeiten ist der beste Weg:

  • if (obj.prop) {}
  • if (obj.hasOwnProperty("prop")) {}
  • if ("prop" in obj) {}

Insbesondere bin ich nur daran interessiert, zu testen, ob die Eigenschaft explizit für dieses Objekt definiert ist, nicht in der Prototypenkette. Darüber hinaus wird der Wert niemals auf null o undefined aber es könnte sich auch um ein leeres Objekt oder Array handeln. Allerdings, wenn Sie, was der richtige Weg ist, wenn diese der Fall sein könnte, fühlen sich frei zu enthalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X