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
}
.welcomeMessage
wezwany na body.onload
wydarzenie.
Spodziewałem shape1.hasOwnProperty(name)
się, że zwrócę prawdę, ale zwraca fałsz.
Jakie jest prawidłowe zachowanie?
javascript
Thiyaneshwaran S
źródło
źródło
"name"
w przeciwieństwie doname
Odpowiedzi:
hasOwnProperty
jest zwykłą funkcją JavaScript, która przyjmuje argument w postaci łańcucha.Kiedy wywołujesz
shape1.hasOwnProperty(name)
, przekazujesz jej wartośćname
zmiennej (która nie istnieje), tak jakbyś to napisałalert(name)
.Trzeba zadzwonić
hasOwnProperty
z ciągiem zawierającymname
coś takiego:shape1.hasOwnProperty("name")
.źródło
hasOwnProperty
oczekuje nazwy właściwości jako łańcucha, więc tak będzieshape1.hasOwnProperty("name")
źródło
Spróbuj tego:
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:
źródło
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
źródło