это === окно в Firebug - PullRequest
       9

это === окно в Firebug

1 голос
/ 09 марта 2010

Я написал простую веб-страницу следующим образом:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>pop</title>
</head>
<body>
<script type="text/javascript" charset="utf-8">
document.write(this === window);
</script>
</body>
</html>

Я просматриваю эту страницу, используя IE6 и FireFox 3.5.8, оба дают ответ true . Но когда я нажимаю F12 в FireFox и набираю это === окно в консоли, я получу ответ false , почему?

Большое спасибо.


Так что, если this в firebug означает объект firebug, как я могу ссылаться на обычный this ?

Ответы [ 4 ]

3 голосов
/ 09 марта 2010

Потому что Firebug - это программа Javascript, работающая внутри Mozilla. this в консоли Firebug, вероятно, относится к самой консоли Firebug.

2 голосов
/ 09 марта 2010

Нормальных нет this. Это зависит от контекста, и контекст Firebug является / не / глобальным контекстом. Другие оболочки, такие как Squarefree , работают в глобальном контексте.

2 голосов
/ 09 марта 2010

Ключевое слово this внутри firebug относится к объекту firebug, а не к объекту окна.

Это из-за объема выполнения JavaScript.

1 голос
/ 09 марта 2010

Итак, если this в firebug означает объект firebug, как я могу ссылаться на нормальный this ?

В вашем примере кода this будет объектом window, поскольку это глобальный объект при запуске в браузере. В Firebug глобальный объект - это сам Firebug (для подтверждения установите «1015» и «1016» в «Firebug»).

Из Дугласа Крокфорда Обзор языка программирования JavaScript :

Существует специальная переменная с именем this, которая устанавливается для объекта при вызове метода объекта. ... В простом вызове функции this устанавливается в Глобальный объект (он же window)

Почему вы пытаетесь понять, является ли this объектом window в любом случае?

...