Вопрос

Когда ты бежишь:

window.toString.call("")

в FF / CH все в порядке, но в IE8 вы получаете ошибку скрипта.Проведя еще немного расследования, выяснилось, что window.toString.call не определено в IE8?

Вы также можете запустить этот:

window.toString instanceof Function;
// false

alert(window.toString);
// function toString() {
//    [native code]
// }

Почему это так и как это решить? И я начал задаваться вопросом, как вообще получается, что jQuery работает?

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

Решение

window является хост-объектом, а Спецификация языка ECMAScript (3-е издание) не требует, чтобы объекты хоста были производными от собственных Object объект.В IE (и, вероятно, в некоторых других браузерах) хост-объекты таковыми не являются, поэтому они не поддерживают ни один из собственных методов или свойств (хотя они могут иметь методы или свойства с теми же именами, что и собственные методы или свойства, доступные скриптам).

Если все, что вы хотите, это получить доступ к родной языковой реализации по умолчанию toString метод, то вы должны использовать Object.prototype.toString.call("").

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

Никфиц прав, метод toString для объекта host, который вы находите, предназначен исключительно для того, чтобы, если вы сделали

оповещение (окно);

вы бы получили текст [object]

Все, чего достигнет метод JavaScript toString(), используемый в ваших примерах, - это создать строку из string, поэтому правильный способ сделать то, что вы пытаетесь, это;

var a =new String ("");

или просто

var b = "";

или, если ты действительно хочешь быть глупым;

var b = "".toString();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top