hasOwnProperty w JavaScript


79

Rozważać:

function Shape() {
    this.name = "Generic";
    this.draw = function() {
        return "Drawing " + this.name + " Shape";
    };
}

function welcomeMessage()
{
    var shape1 = new Shape();
    //alert(shape1.draw());
    alert(shape1.hasOwnProperty(name));  // This is returning false
}

.welcomeMessagewezwany na body.onloadwydarzenie.

Spodziewałem shape1.hasOwnProperty(name)się, że zwrócę prawdę, ale zwraca fałsz.

Jakie jest prawidłowe zachowanie?


5
wymaga łańcucha, więc "name"w przeciwieństwie doname
— AO_

Odpowiedzi:


157

hasOwnProperty jest zwykłą funkcją JavaScript, która przyjmuje argument w postaci łańcucha.

Kiedy wywołujesz shape1.hasOwnProperty(name), przekazujesz jej wartość namezmiennej (która nie istnieje), tak jakbyś to napisał alert(name).

Trzeba zadzwonić hasOwnPropertyz ciągiem zawierającym namecoś takiego: shape1.hasOwnProperty("name").


1
Nie zapomnij dodać funkcji hasOwnProperty () zwraca wartość logiczną wskazującą, że właściwość (w tym przypadku nazwa) istnieje lub nie istnieje
— maheshmnj

18

hasOwnProperty oczekuje nazwy właściwości jako łańcucha, więc tak będzie shape1.hasOwnProperty("name")


3

Spróbuj tego:

function welcomeMessage ()
{
    var shape1 = new Shape ();
    // alert (shape1.draw ());
    alert (shape1.hasOwnProperty ("name"));
}

Podczas pracy z odbiciem w JavaScript obiekty składowe są zawsze określane jako nazwa jako ciąg. Na przykład:

for(i in obj) { ... }

Iterator pętli i będzie zawierał wartość ciągu z nazwą właściwości. Aby użyć tego w kodzie, musisz zaadresować właściwość za pomocą operatora tablicy w następujący sposób:

 for (i in obj) {
   alert ("Wartość obj." + i + "=" + obj [i]);
 }

2

hasOwnProperty () to przyjemna właściwość do sprawdzania poprawności kluczy obiektów. Przykład:

var obj = {a:1, b:2};

obj.hasOwnProperty('a') // true

W odniesieniu do „ładnej własności” : Czy nie jest to funkcja?
— Peter Mortensen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.