Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   иерархия объектов javascript и prototype (https://javascript.ru/forum/events/39616-ierarkhiya-obektov-javascript-i-prototype.html)

skrudjmakdak 05.07.2013 16:07

иерархия объектов javascript и prototype
 
вот тут нашел немного про иерархию:
http://javascript.ru/tutorial/founda...arhiya-obektov
т.е. там объект window на на самом верхнем уровне, хотя по идеи object самый главный/верхний.. ну да ладно, вообщем проблемка вот в чем:

допустим к какому то классу хочу добавить метод, например, кроссбраузерное добавление событий:
Object.prototype.addEvent = function (event, func)
	{
    (typeof this.addEventListener === "function") ? this.addEventListener(event, func, false) : this.attachEvent('on' + event, func);
	}

добавляем обработчик:
...
document.addEvent('click', function()
	{
	console.log(1);
	});
...

вауууля, все работает..

но теперь пишем:
var r = new Array();
console.log(r)

в консоль разумеется выпадает наш метод добавления событий (addEvent), который в данном объекте он 100 лет не нужен..

где можно прочитать документацию про иерархию объектов в js, чтобы методы добавлять именно туда где они действительно необходимы, а не лепить все в самый верхний объект (Object)??

danik.js 05.07.2013 16:21

var object  = document.createElement('div');
var prototypes = [];
var prototype = null;
while(prototype = Object.getPrototypeOf(prototype || object))
    prototypes.push(prototype.constructor.name)
alert(prototypes);

skrudjmakdak 05.07.2013 16:30

угу, понял.. спасибо!

danik.js 05.07.2013 16:52

Ах да, изменять прототипы без особой на то надобности не рекомендуется. Плохая практика.

skrudjmakdak 05.07.2013 18:12

Цитата:

Сообщение от danik.js (Сообщение 260427)
изменять прототипы без особой на то надобности не рекомендуется

изменять существующие?? или добавлять свои собственные?

danik.js 05.07.2013 18:32

А как ты добавишь свой прототип? Не существует кроссбраузерного способа подменить прототип существующего объекта.

skrudjmakdak 05.07.2013 18:57

ок, понял!


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