Рассматривать:
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
призвал на body.onload
мероприятие.
Я ожидал shape1.hasOwnProperty(name)
вернуть true, но он возвращает false.
Какое правильное поведение?
javascript
Тиянешваран С
источник
источник
"name"
в отличие отname
Ответы:
hasOwnProperty
- обычная функция JavaScript, которая принимает строковый аргумент.Когда вы вызываете,
shape1.hasOwnProperty(name)
вы передаете ему значениеname
переменной (которой не существует), как если бы вы написалиalert(name)
.Вам нужно позвонить
hasOwnProperty
со строкой , содержащейname
, например:shape1.hasOwnProperty("name")
.источник
hasOwnProperty
ожидает имя свойства в виде строки, поэтому оно будетshape1.hasOwnProperty("name")
источник
Попробуй это:
При работе с отражением в JavaScript на объекты-члены всегда ссылаются как на имя в виде строки. Например:
for(i in obj) { ... }
Итератор цикла i будет содержать строковое значение с именем свойства. Чтобы использовать это в коде, вы должны обратиться к свойству с помощью оператора массива следующим образом:
источник
hasOwnProperty () - хорошее свойство для проверки ключей объекта. Пример:
var obj = {a:1, b:2}; obj.hasOwnProperty('a') // true
источник