null / undefined заменяются глобальным объектом во всех браузерах, кроме IE9 - PullRequest
5 голосов
/ 20 февраля 2011

Когда я делаю это:

Object.prototype.toString.call( null )

или это:

Object.prototype.toString.call( )

браузеры возвращают следующее строковое значение (в обоих случаях):

Chrome 9: [object global]
Safari 5: [object DOMWindow]
Firefox 3.6: [object Window]
Опера 11: [object Window]

Однако в IE9 RC возвращаемыми значениями являются [object Null] и [object Undefined] соответственно.

В спецификации ES5 указано:

ПРИМЕЧАНИЕ Передано значение thisArg. без изменений, как это значение. Это изменение от издания 3, где неопределенный или нулевой thisArg заменяется глобальным объектом и ToObject применяется ко всем остальным значения и этот результат передается как это значение.

Смотрите здесь: http://es5.github.com/#x15.3.4.4

Значит ли это, что IE9 - единственный браузер, который следует этому недавно введенному правилу?

1 Ответ

3 голосов
/ 20 февраля 2011

Я собираюсь выйти на конечность и сказать да .;)

К вашему сведению, я только что проверил FF4, и он дает [object Null] и [object Undefined]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...