Область действия окна консоли Firebug.Почему «это» не всегда одно и то же?

StackOverflow https://stackoverflow.com/questions/1803660

  •  05-07-2019
  •  | 
  •  

Вопрос

Область действия консоли Firebug.Почему «это» не всегда одно и то же?Разве это не должно быть все время «окном»?

Это было полезно?

Решение

Значение this в консоли будет таким же, как значение this в коде, который выполняется в данный момент.Учитывать:-

function outer()
{
        // this is window

    var x = {n:12};

    var fn = function()
    {
               // this is object {n:12}

        alert(this.n);
    }

    fn.call(x);
}

...

<img src="thing.gif" onclick="outer()" />

Если вы поставите точку останова на x = {n:12} строку, переключитесь на консоль, вы найдете this это окно.Однако когда вы подходите к alert линия this в консоли — это объект, принадлежащий x переменная.IOW, нет различия между this в контексте выполнения и консоли.Именно по этой причине вы можете использовать консоль для настройки значений переменных и свойств во время отладки.

Другие советы

  

В функции, вызываемой напрямую без   явный объект-владелец, вызывает   значение this должно быть по умолчанию   объект (окно в браузере).      

В функции, вызываемой с использованием метода   синтаксис вызова, например    objname.myFunction () или    objname ['myFunction'] () , вызывает   значение этого должно быть objname.

Узнайте больше о вызывающих функциях в JavaScript

JavaScript, 5 способов вызова функции

Ключевое слово this всегда ссылается на владельца вызываемой функции. Вы можете прочитать четкое и подробное объяснение этого здесь .

Из статьи, на которую я ссылался выше, я думаю, это объясняется наиболее четко:

альтернативный текст http:////i49.tinypic.com/ax1jxw.png

scroll top