Проблема с прототипами обьектов в 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. В чем косяк то может быть!? |
В IE DOM-элементы не являются потомками Object.
|
Вот блин... Ларчег то просто открывался.
|
но... при этом в IE alert(typeof(document.getElementById('some_id'))) выдает 'object'
|
У него и alert(typeof alert) выдает object :)
|
Понятно! Буду искать другие пути.
|
Приемлемого способа добавления метода всем DOM-нодам в ИЕ нет.
|
Ну можно через какую нить промежуточную функцию реализовать.
(как это сделано в фреймворках) и совместить заодно с умным селектором(типа Sizzle). В общем, с чего начали к тому и вернулись. Я просто пытаюсь уйти от фреймворков, и ограничиваться небольшим кол-вом самописных функций... |
| Часовой пояс GMT +3, время: 03:37. |