Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с прототипами обьектов в IE (https://javascript.ru/forum/misc/5433-problema-s-prototipami-obektov-v-ie.html)

Johnny 14.10.2009 12:58

Проблема с прототипами обьектов в IE
 
Всем привет! Возникла проблема с JS во всеми любимом эксплорере.

Добавляю через прототип функции к обьекту Object таким образом:
Object.prototype.some_func = function() {
    alert('it works!')
}


Теперь эта ф-я some_func по должна появиться во всех объектах.

Для удобства работы, некоторые ф-и помещаю в общий обьект:
var test_obj = {
    func1:function(){},
    ...
    funcN:function(){
         this.target_obj = document.getElementById('some_id')
         alert( typeof( this.target_obj.some_func  ) )
         // выводит "function"
    }
}

так вот test_obj.funcN() и выводит function. В FF, в Chrome, в Opera. Но не в IE. в IE у target_obj почему-то нет ф-и some_func.

В чем косяк то может быть!?

Kolyaj 14.10.2009 13:31

В IE DOM-элементы не являются потомками Object.

Johnny 14.10.2009 13:52

Вот блин... Ларчег то просто открывался.

Johnny 14.10.2009 13:54

но... при этом в IE alert(typeof(document.getElementById('some_id'))) выдает 'object'

Kolyaj 14.10.2009 13:55

У него и alert(typeof alert) выдает object :)

Johnny 14.10.2009 14:07

Понятно! Буду искать другие пути.

Kolyaj 14.10.2009 14:22

Приемлемого способа добавления метода всем DOM-нодам в ИЕ нет.

Johnny 14.10.2009 15:36

Ну можно через какую нить промежуточную функцию реализовать.
(как это сделано в фреймворках) и совместить заодно с умным селектором(типа Sizzle).
В общем, с чего начали к тому и вернулись. Я просто пытаюсь уйти от фреймворков, и ограничиваться небольшим кол-вом самописных функций...


Часовой пояс GMT +3, время: 17:56.