hasOwnProperty в JavaScript


79

Розглянемо:

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)повернення істини, але це повернення помилки.

Яка правильна поведінка?


5
для цього потрібен рядок, тому "name", на відміну відname
AO_

Відповіді:


157

hasOwnProperty є звичайною функцією JavaScript, яка приймає аргумент рядка.

Коли ви телефонуєте, shape1.hasOwnProperty(name)ви передаєте йому значення nameзмінної (яка не існує), як це було б, якби ви писали alert(name).

Вам потрібно зателефонувати hasOwnPropertyз рядком , що містить name, наприклад: shape1.hasOwnProperty("name").


1
Не забудьте додати hasOwnProperty () повертає логічне значення із зазначенням властивості (в даному випадку імені) вказане існує чи ні
maheshmnj


3

Спробуйте це:

функція welcomeMessage ()
{
    var shape1 = new Shape ();
    // попередження (shape1.draw ());
    попередження (shape1.hasOwnProperty ("ім'я"));
}

При роботі з відображенням у JavaScript об'єкти-члени завжди називаються іменем як рядком. Наприклад:

for(i in obj) { ... }

Ітератор циклу i буде містити значення рядка з назвою властивості. Щоб використовувати це в коді, вам потрібно звернутися до властивості, використовуючи оператор масиву, як це:

 for (i in obj) {
   alert ("Значення obj." + i + "=" + obj [i]);
 }

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.