JavaScript: toString - PullRequest
       5

JavaScript: toString

3 голосов
/ 08 сентября 2010

Как получилось Object.prototype.toString === toString?Если у меня есть это в глобальной области видимости:

var toStringValue = toString.call("foobaz");

Я бы ожидал, что toStringValue будет значением window.toString, потому что window является областью по умолчанию, верно?Почему toString само по себе разрешается в Object.prototype.toString вместо window.toString?

1 Ответ

4 голосов
/ 08 сентября 2010

Результаты, которые вы получите, будут зависеть от среды хоста.Если я запускаю это:

alert(toString === window.toString);
alert(toString === Object.prototype.toString);​

... в Chrome, я получаю true и false соответственно;в Firefox я получаю false и false.IE дает true и false , но см. Ниже.

Объект окна в браузерах немного сложен, потому что это хост-объект, и хост-объекты могут делать странные вещи, еслихочу.:-) Например, ваш toString.call("foobaz") не будет работать в IE, потому что toString из window не является реальной функцией JavaScript и не имеет call или apply.(Я не говорю, что это правильно, понимаешь ...)

...