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.