Как получить доступ к переменным класса в IE?
Здравствуйте. У меня стоит задача получить доступ к переменным на странице, а точнее к переменным класса. Для этого я перебираю циклом for...in все свойства объекта window:
var classA = function(){ } var a = new classA(); var b = new classA(); var z = new Date(); for (var k in window) { if (typeof (window[k]) == "object" && window[k] instanceof classA) { // Здесь IE выдает ошибку alert('Variable ' + k + ' is a classA'); } } В опере и хроме скрипт отрабатывает правильно, находит переменные a и b. Чего не скажешь про IE, который просто выдает ошибку в строке 9: "предполагается наличие объекта". Получается, что IE попросту не видит эти переменные в цикле. При этом мне нужно, чтобы скрипт работал именно под IE. В чем может быть проблема? |
Это особенность IE, ничего не поделать. Используйте массивы/объекты.
|
Цитата:
|
А зачем вообще что-либо пихать в глобальную область видимости?
А чтобы понять, что вам делать, нужно узнать, зачем вам это. |
Цитата:
|
все еще хуже, for( var k in window ) не видит глобальные переменные... а каким образом твой скрипт внедряется в страницу?
|
Цитата:
|
а нельзя конструктор переопределить, чтобы он следил за созданием объектов? (возможно, реализацию нужно будет подправить)
var oldClassA = classA; var classA = function(){ if( ! classA._instances ) classA._instances = []; var o = oldClassA.apply(this, arguments) || this; classA._instances.push( o ); return o; } |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 05:09. |