kefi, стоп. Мне не совсем ясен посыл информации. У Вас цель какая? Понять, что такое JavaScript (и в целом, динамические языки)? Понять, чем отличаются динамические языки от статических? Найти/доказать сходство с Java? Или, может, ещё что-то? Какова цель? Так можно будет локализовать неясности.
Ещё раз. Суть динамики - в возможности изменения объектов. Вот есть мой объект A, у него есть 10 методов. Я подключаю Ваш плагин (и всё, больше я ничего не делаю, относительно Вашего кода, не реализовываю никакие интерфейсы, и Вы не реализовываете - я только подключаю Ваш плагин) - и мой объект А имеет ещё 20 методов + 5 моих изменённых. Где Вы в статике такое же увидели?
Сообщение от kefi
|
Не следует говорить о какой-то динамике на стадии проектирования ,
|
Ещё как следует. Стадия проектирования может содержать расширение (именно это динамика) уже существующих объектов/классов/прототипов (например, расширение стандартных объектов, типа Array, Number и т.д.). Где Вы в статике такое же увидели?
Сообщение от kefi
|
Подключение плагина - это этап проектирования, на котором программист ( а не программма,
|
obj.method = (function () {
if (IE) {
return function _ie() {};
}
return function _other() {};
})();
Это этап проектирования, где
программа определяет, какое тело будет у метода .method. В общем же случае, этот функционал мог бы быть добавлен и позже этапа проектирования (по какому-нибудь событию).
update:
Сообщение от kefi
|
Динамика / статика должно пониматься
|
Ещё раз. Динамика - это возможность изменения структуры объектов - на этапах: (а) - проектирования (включая программное определение - см. пример с obj.method; по сути - это тоже можно назвать рантаймом), и (б) - постинциализирующий рантайм, когда ровно та же динамика ровно так же может изменять объекты.
Если так будет проще понять, представьте, что Ваш плагин я подключаю не на этапе инициализации, а в постинициализирущем рантайме - по событию, - и только после этого мой объект А приобрёл бы новый функционал и изменил существующий. Вы как-то не за то зацепились - за "косметические украшения" с именами методов, тогда как цепляться нужно за основную суть - динамическое расширение объектов, которого нет в статике.
update2:
Еще одно. Естественно, под динамикой, мы имеем в виду динамику объектов. Возвращаясь к этапу проектирования, - да, конечно, и в статических языках можно подключить какую-то библиотеку, и у Вас появится новый функционал (новые функции, классы и т.д.). Но речь будет идти не о динамике
объектов (уже существующих объектов), а всего лишь о расширении системы новым функционалов (
новыми объектами). По большому счёту, в плане функционала, можно было бы даже говорить о равности функционалов. Только, увидьте разницу - в динамических языках мы можем оперировать свойствами уже существующих объектов, тогда как в статике, подключение "плагина" - это новые объекты (и это уже не динамика, а просто "этап проектирования", где Вы описываете, из какого
дополнительного набора будет состоять Ваша система, а не какой дополнительный функционал
будет добавлен к Вашим объектам).