Erfahren Sie, wie Sie die hasOwnProperty()-Methode von JavaScript verwenden

Die hasOwnProperty - Methode von JavaScript wird verwendet, um zu prüfen, ob ein bestimmtes Objekt eine bestimmte Eigenschaft hat.

Die von der Methode hasOwnProperty geprüfte Eigenschaft ist objekt intern, dh sie muss vom Benutzer definiert worden sein.

Wenn die an hasOwnProperty übergebene Eigenschaft für das Objekt vorhanden ist, gibt die Methode true zurück , andernfalls gibt sie false zurück .

Beispiel 1:

In diesem Beispiel erstellen wir das Objekt person und fügen die Eigenschaft name hinzu , dann verwenden wir hasOwnProperty , um zu überprüfen, ob diese Eigenschaft Teil unseres Objekts ist.

1var person = {
2    "name": "Brian",
3    "lastName": "Scott"
4};
5
6console.log( person.hasOwnProperty("name") );

Ausgabe:

1true

Beispiel 2:

In diesem Beispiel werden wir ein Objekt namens car deklarieren und ihm eine Eigenschaft namens doors zuweisen , sodass wir hasOwnProperty verwenden können , um diese Eigenschaft zu überprüfen.

1var car = {
2    "doors": 4,
3    "engine": 2.0,
4    "color": "black"
5};
6
7var hasDoor = car.hasOwnProperty("doors");
8
9console.log(hasDoor);

Ausgabe:

1true

Beispiel 3:

Hier werden wir den Eigenschaftsnamen unseres Objekts absichtlich falsch schreiben, sodass die Methode hasOwnProperty false zurückgibt .

1var shoppingCart = {
2    "fruits": true,
3    "bread": false
4};
5
6var hasFruits = shoppingCart.hasOwnProperty("fruites");
7
8console.log(hasFruits);

Ausgabe:

1false

Warum ist es wichtig, die hasOwnProperty-Methode zu verwenden?

Sehen wir uns an, wie wichtig es ist, die hasOwnProperty-Methode zu verwenden , um zu prüfen, ob eine Eigenschaft in einem Objekt in JavaScript vorhanden ist.

Alles in JavaScript ist ein Objekt.

Richtig, jedes in JavaScript erstellte Element wird als Objekt betrachtet. Zahlen, Text Zeichenfolgen, Arrays und alle anderen JavaScript-Datentypen erben Eigenschaften von einem übergeordneten Objekt.

Beispiel 1:

Der numerische Datentyp in JavaScript wird als Objekt betrachtet.

1var number = 10.22333;
2var otherNumber = number.toPrecision(3);
3
4console.log(otherNumber);

Ausgabe:

110.2

Beispiel 2:

Der Datentyp string wird ebenfalls als Objekt betrachtet.

1var name = "Peter Max";
2var char = name.charAt(2);
3
4console.log(char);

Ausgabe:

1t

Beispiel 3:

Sogar Arrays in JavaScript sind Objekte.

1var cars = ["BMW", "Audi", "Aston Martin"];
2
3var carIndexNumber = cars.indexOf("BMW");
4
5console.log(carIndexNumber);

Ausgabe:

10

In den vorherigen Beispielen erben alle Objekte Eigenschaften vom Hauptobjekt Object.

Der in-Befehl in JavaScript

Neue JavaScript-Programmierer verwenden normalerweise den Befehl in , um zu prüfen, ob eine Eigenschaft für ein bestimmtes Objekt vorhanden ist.

Beispiel:

 1var car = {
 2    "doors": 2,
 3    "engine": 1.2,
 4    "color": "yellow"
 5};
 6
 7if ("engine" in car) {
 8    console.log("true");
 9} else {
10    console.log("false");
11}

Ausgabe:

1true

Das Problem ist, dass der Befehl in umfassend ist. Es wird nach allen Eigenschaften des Objekts gesucht. Benutzerdefinierte Eigenschaften und Eigenschaften, die vom übergeordneten Objekt geerbt wurden, werden in die Prüfung einbezogen.

Dies kann zu einem Logikfehler führen, wenn der Programmierer einen Codeabschnitt nur dann ausführt, wenn eine Objekt Eigenschaft vorhanden ist.

Aber der Programmierer möchte eine Standardeigenschaft des Objekts überprüfen? Oder eine vom Benutzer erstellte Eigenschaft?

Beispiel:

 1var car = {
 2    "doors": 2,
 3    "engine": 1.2,
 4    "color": "yellow"
 5};
 6
 7if ("toString" in car) {
 8    console.log("true");
 9} else {
10    console.log("false");
11}

Ausgabe:

1true

Im vorherigen Beispiel gibt der Befehl in true zurück , das heißt, er geht davon aus, dass die Eigenschaft toString in unserem Objekt vorhanden ist, obwohl diese Eigenschaft nicht von uns deklariert wurde.

Die Eigenschaft/Methode toString wird vom übergeordneten Objekt geerbt. Um diese Verwirrung zu vermeiden, verwenden Sie immer die hasOwnProperty- Methode .

Beispiel:

 1var car = {
 2    "doors": 2,
 3    "engine": 1.2,
 4    "color": "yellow"
 5};
 6
 7if ( car.hasOwnProperty("toString") ) {
 8    console.log("true");
 9} else {
10    console.log("false");
11}

Ausgabe:

1false

Jetzt war die Rückgabe der Wert false. Das liegt daran, dass die hasOwnProperty-Methode , wie wir bereits gesehen haben, nur nach benutzerdefinierten Eigenschaften sucht.