Область действия окна консоли Firebug.Почему «это» не всегда одно и то же?
-
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
Ключевое слово this
всегда ссылается на владельца вызываемой функции. Вы можете прочитать четкое и подробное объяснение этого здесь .
Из статьи, на которую я ссылался выше, я думаю, это объясняется наиболее четко:
альтернативный текст http:////i49.tinypic.com/ax1jxw.pngа> р>