Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.07.2013, 16:07
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

иерархия объектов 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)??
Ответить с цитированием
  #2 (permalink)  
Старый 05.07.2013, 16:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

var object  = document.createElement('div');
var prototypes = [];
var prototype = null;
while(prototype = Object.getPrototypeOf(prototype || object))
    prototypes.push(prototype.constructor.name)
alert(prototypes);
Ответить с цитированием
  #3 (permalink)  
Старый 05.07.2013, 16:30
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

угу, понял.. спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 05.07.2013, 16:52
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ах да, изменять прототипы без особой на то надобности не рекомендуется. Плохая практика.
Ответить с цитированием
  #5 (permalink)  
Старый 05.07.2013, 18:12
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Сообщение от danik.js Посмотреть сообщение
изменять прототипы без особой на то надобности не рекомендуется
изменять существующие?? или добавлять свои собственные?
Ответить с цитированием
  #6 (permalink)  
Старый 05.07.2013, 18:32
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А как ты добавишь свой прототип? Не существует кроссбраузерного способа подменить прототип существующего объекта.
Ответить с цитированием
  #7 (permalink)  
Старый 05.07.2013, 18:57
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

ок, понял!
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Методы для объектов JavaScript olgaa Общие вопросы Javascript 3 05.05.2013 18:26
Профилирование JavaScript объектов в памяти prike Общие вопросы Javascript 4 05.08.2012 14:09
JavaScript. Создание собственных объектов finner Работа 2 05.04.2012 16:50
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 18:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 19:34