Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1261 (permalink)  
Старый 24.12.2013, 03:15
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Maxmaxmaximus6
Не принято расширять прототипы элементов
Я это знаю, но всегда не до конца понимал почему? Если моя функция не затрагивает стандартные и по сути это синтаксический сахар..
вот к пример код взятый с https://developer.mozilla.org/en/docs/Web/API/NodeList#Why_can't_I_use_forEach_or_map_on_a_NodeL ist.3F
var arrayMethods = Object.getOwnPropertyNames( Array.prototype );

arrayMethods.forEach( attachArrayMethodsToNodeList );

function attachArrayMethodsToNodeList(methodName)
{
    NodeList.prototype[methodName] = Array.prototype[methodName];
};
 
var divs = document.getElementsByTagName( 'div' );
var firstDiv = divs[ 0 ];

firstDiv.childNodes.forEach(function( divChild ){
  divChild.parentNode.style.color = '#0F0';
});
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.

Последний раз редактировалось cyber, 24.12.2013 в 03:19.
Ответить с цитированием
  #1262 (permalink)  
Старый 24.12.2013, 03:31
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus6
 
Регистрация: 19.12.2013
Сообщений: 180

Сообщение от cyber
Я это знаю, но всегда не до конца понимал почему?
Потому что в яваскрипте не существует модулей, а сайты модульные, люди пишут библиотеки и они подключаются на один сайт в рандомных сочетаниях, существует риск что кто-то другой уже использует этот неймспейс и эти названия. К примеру я в своей реализации скрипта уменьшающего картинки мог хранить значение zoom не в замыкании, а в обьектной модели картинки (image.$zoom = true) но я этого не делал по тому что возможно через лет 200 Кантор подключит на свой сайт либу которая использует это свойство у картинок, и мой скрипт перестанет работать. По этому существует соглашение не делать так.
Ответить с цитированием
  #1263 (permalink)  
Старый 24.12.2013, 03:39
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Maxmaxmaximus6, да это я понимаю, твой пример не много не подходит так как Илья Кантор, не знает о твоем скрипте, а при подключение новой либы известно что подлкючена другая либа, хотя с другой стороны, если проект делают разные люди, в общем да, нужно придумать как все удобно вынести в отдельный неймспейс.
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #1264 (permalink)  
Старый 24.12.2013, 03:42
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus6
 
Регистрация: 19.12.2013
Сообщений: 180

Ты не понял, Вася пупкин может подключить либу и не зная как она устроена и какие свойства она использует.

Дело не в том что проэкт делают разные люди и могут напутаться. Дело в том что если ангуляр будет использовать prototype.ololo и jquery будет использовать prototype.ololo. то подключив и то и то у меня сайт не будет работать и я не буду понимать в чем дело. я не обязан знать как устроены ангуляр и jquery и это они должны следить за тем чтобы не было конфликтов.

если ты делаешь проект то ты можешь использовать глобальные переменные и расширять прототипы ТОЛЬКО если ты не подключаешь каких-то левых либ.

Ты еще не понял? человек который подключает либу НЕ ЗНАЕТ как она внутри устроена. А что если ангуляр использует одно свойство и Jquery?? Что ему теперь не подключать их ВМЕСТЕ??

А что если ты в своем проекте используешь расширение прототипов и у тебя подключен ангуляр и он тоже использует расширение прототипов, ну вот раньше не использовал а завтра начнет, то твой сайт поломается, ты студия и ты сделал сайт и через год он перестает работать. норма?

Последний раз редактировалось Maxmaxmaximus6, 24.12.2013 в 03:46.
Ответить с цитированием
  #1265 (permalink)  
Старый 24.12.2013, 03:50
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Maxmaxmaximus6, это ты не понял, так я не уточнил ключевой момент)) Я это и так все знаю, просто сижу рассуждаю насчет как собрать все в либу для своих мини проектов, у меня щас просто все через прототип.
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #1266 (permalink)  
Старый 24.12.2013, 03:54
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus6
 
Регистрация: 19.12.2013
Сообщений: 180

Ты задаешь вопрос почему так нельзя делать, ты сказал я знаю что так низя но не понял почему, я обьяснил тебе, теперь ты понял)?
Ответить с цитированием
  #1267 (permalink)  
Старый 24.12.2013, 03:56
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Maxmaxmaximus6
Ты задаешь вопрос почему так нельзя делать, ты сказал я знаю что так низя но не понял почему, я обьяснил тебе, теперь ты понял)?
По сути вопрос был реторическим, у меня бывает такое, что сначала спрашиваю что вопрос бессмысленный так как я и так знаю на него ответ)
Но всеравно спасибо
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #1268 (permalink)  
Старый 24.12.2013, 04:08
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus6
 
Регистрация: 19.12.2013
Сообщений: 180

Окей тогда в чем вопрос)? Ну ты что то там делашеь и хочешь обьединить как то там и спрашиваешь как лучше сделать?
Ответить с цитированием
  #1269 (permalink)  
Старый 24.12.2013, 04:20
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Maxmaxmaximus6
Окей тогда в чем вопрос)? Ну ты что то там делашеь и хочешь обьединить как то там и спрашиваешь как лучше сделать?
По сути да, из вариантов

document.body.$.parent(); // добавить неймспейс прям в прототипы


или

$.parent(document.body);


или начинать все имена с $
document.body.$parent();



либо на прототипах оставить, как MooTools. (больше к этому склоняюсь).
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #1270 (permalink)  
Старый 24.12.2013, 04:27
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus6
 
Регистрация: 19.12.2013
Сообщений: 180

а что ты пишешь? либу которая будет предоставлять api для css анимаций яваскрипту? а зачем яваскрипту такой api?
ведь анимации это внешность, а внешностью должен заниматься css.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск плагина Менеджер картинок serhio11 jQuery 2 27.01.2014 15:43
Автопереключатель картинок Vempel Общие вопросы Javascript 0 03.10.2013 18:36
Смишных видео с намеком тред godofjavascript Оффтопик 4 30.12.2012 23:50
Одинаковая высота картинок Irina13 Javascript под браузер 15 29.02.2012 12:06
Загрузчик картинок Livanderiaamarum Общие вопросы Javascript 1 15.01.2012 17:21