LINUX.ORG.RU

JavaScript 2 (ECMAScript v.4) для Web 2

 , ,


0

0

Автор статьи обращает внимание на интересные моменты разрабатываемого стандарта JavaScript 2.0
Вводится ключевое слово class с модификаторами (final, dynamic, extends, implements, etc.)
Появляется режим компиляции strict, при котором происходит проверка типов на этапе компиляции.
Вводится понятие модуля, который загружается при обращении к нему, константы, пространства имён, перегрузка операторов и многое другое.
Обзор http://www.ecmascript.org/es4/spec/ov... (pdf)

>>> Подробности(на английском)

★★★

Проверено: anonymous_incognito ()
Последнее исправление: cetjs2 (всего исправлений: 2)

Ответ на: комментарий от mirage

>отчего-то у меня закрались подозрения, что благородный дон не знает javascript.

+inf

r ★★★★★
()
Ответ на: комментарий от Legioner

Люди, если вам кажется что реализация яваскрипта в разных браузерах настолько разная, что о ней стоит говорить двусмысленно, то советую убиться об стену или что-то твердое. В этом случае могу точно сказать - все баги и проблемы от вашей некомпетентности. Говорю как веб-разработчик с почти 10-летним стажем и постоянным опытом разработки под все популярные браузеры.
И никакого веб-2.0 и аякса не существует. Нет таких официальных определений. Это формальные метки для даунов не способных самостоятельно оценить возможности предоставляемых им средств. Не упоминайте эти быдлометки в приличном обществе.

anonymous
()
Ответ на: комментарий от anonymous

> Говорю как веб-разработчик с почти 10-летним стажем

тебе вапросег: есть callback на событие в html-форме, callback - closure в объекте (нужен доступ к потрохам объекта), форма (пере)создаётся динамически методом объекта. Как привязать callback к событию не указывая явно имени объекта (поскольку reflection отсутствует имя объекта мне приходится передавать снаружи)?

filin ★★
()
Ответ на: комментарий от filin

экая бредятина. ничего не ясно. можно как-то это по русски пояснить? или по-папуасьи лучше, в картинках. а то я тут ничего сложного не вижу.

mirage
()
Ответ на: комментарий от anonymous

>Люди, если вам кажется что реализация яваскрипта в разных браузерах настолько разная, что о ней стоит говорить двусмысленно, то советую убиться об стену или что-то твердое.

Она достаточно разная, для того чтобы нельзя было делать всё по спеке и получить работающий код на всех браузерах. У одного течет больше, у другого что-то недореализовано, у третьего работает хер пойми как.

Конечно, имея 10 летний опыт можно писать на подмножестве, которое работает везде, но речь-то не об этом.

>И никакого веб-2.0 и аякса не существует. Нет таких официальных определений. Это формальные метки для даунов не способных самостоятельно оценить возможности предоставляемых им средств. Не упоминайте эти быдлометки в приличном обществе.

Чем тебе названия-то не угодили? AJAX -- приложения без перегрузки страниц, ну типа как Google Maps или что-нибудь подобное. Веб-2.0 -- баззворд :)

WFrag ★★★★
()
Ответ на: комментарий от tailgunner

>И чем оно лучше class-based?

Оно не лучше, оно другое, со своими плюсами и минусами.

>Ну да, самомодифицурующийся код - это прикольно... писать.

Да и читать нормально, если писать без фанатизма.

WFrag ★★★★
()
Ответ на: комментарий от mirage

> ничего не ясно. можно как-то это по русски пояснить? или по-папуасьи лучше, в картинках

по-папуасьи ты переводи сам, я этого языка не знаю. Чего не ясно? Есть форма создаваемая динамически, на событие которой надо повесить метод объекта, в котором она создана. Вопрос - как это сделать не проявляя внешнее имя объекта или формы.

filin ★★
()
Ответ на: комментарий от filin

>Чего не ясно?
ничего не ясно. для начала не ясно, что есть «событие формы».

function XObject () {
  var me = this;
  this.data = "hey!";
  this.Handler = function (evt) {
    alert("wtf?!"+me.data);
  };
  this.AttachTo = function (elem, eventName, handlerName) {
    elem.addEventListener(eventName, this[handlerName], false);
  };
  return this;
}

var div = document.createElement("DIV");
div.innerHTML = "shit!";
document.body.appendChild(div);

var obj = new XObject();
obj.AttachTo(div, "click", "Handler");


в чём проблема?

mirage
()
Ответ на: комментарий от mirage

> var div = document.createElement("DIV");

"The createElement method creates a stand-alone element under the document object. This element is a single node that has neither children nor father, and is not related to any other existing document nodes. The only information attached to such a node is the HTML tag it represents, such as <P>, <FONT>, or <TABLE>." http://www.webreference.com/js/column44/createtag.html

не катит, нужно встроить создаваемый элемент в определённый родительский node, id родителя естественно известно

filin ★★
()
Ответ на: комментарий от filin

>не катит, нужно встроить создаваемый элемент в определённый родительский node, id родителя естественно известно

«смотрю в маны, вижу фигу». автоцитата: document.body.appendChild(div);

если лень читать DOM API, то вот, например:

var node = document.getElementById("myid");

node.appendChild(div);

также RTFM по поводу firstChild, childNodes, insertBefore(), etc. короче, штудировать DOM API reference.

mirage
()
Ответ на: комментарий от mirage

"короче", сам нашёл уже appendChild и проверил, что у меня работает. но всё равно спасибо

"короче", расплодили технологий, хоть бери пулемёт и отстреливай их разработчиков :Е

filin ★★
()
Ответ на: комментарий от anonymous

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

NonHuman ★★★
() автор топика
Ответ на: комментарий от WFrag

Как правило, всё проще.
При создании экземпляра объекта, методы создаются для текущего браузера используюя все его "особенности".
Т.е. API остаётся неизменным. Все довольны.

NonHuman ★★★
() автор топика
Ответ на: комментарий от filin

вот с тем, что DOM API удобен примерно так же, как кровать из гвоздей, я соглашусь. таки за это надо медленно убивать.

а по кривому API многие делают вывод, что крив и javascript, хотя это совершенно не так.

mirage
()
Ответ на: комментарий от NonHuman

>Т.е. API остаётся неизменным.

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

mirage
()
Ответ на: комментарий от mirage

Вы читать умеете?
Я явно написал, при создании экземляра объекта методы содаются под конкретный браузер.
Ок. Проясню.
function myObj(){
if(IE){this.tellBrowserName = function(){alert("IE")}}
else {this.tellBrowserName = function(){alert("Firefox")}}
}

я публикую API состоящий из метода tellBrowserName и он работает в обоих поддерживаемых браусерах одинаково хорошо.

ps
DOM это основа. Простыми средствами достигается результат. и это хорошо.
Ругать его это примерно как ругать небо за то, что оно голубое.

NonHuman ★★★
() автор топика
Ответ на: комментарий от NonHuman

>Я явно написал, при создании экземляра объекта методы содаются под конкретный браузер.

а вот за это в приличных домах бьют по почкам и больше не пускают на порог. давно пора учредить фонд, который будет расстреливать скриптопейсателей, проверяющих браузер, а не capabilities.

>я публикую API состоящий из метода tellBrowserName и он работает в обоих поддерживаемых браусерах одинаково хорошо

после чего сайт открывают в Konqueror и не работает уже нихуя.

>Простыми средствами достигается результат.

вы определённо с другой планеты. скажите ещё, что DOM API логичен. если вы так считаете, поясните мне, где, например, метод insertAfter(), и почему его нет, когда есть insertBefore()? или какого ангела нет, например, метода suicide() для весьма распространённого действия node.parentNode.removeChild(node), но есть appendChild(), который точно так же можно заменить использованием insertBefore() и insertAfter() (если бы он был, что логично; но с логикой авторы API не дружат, они дружат с веществами).

>Ругать его это примерно как ругать небо за то, что оно голубое.

следует понимать, что DOM API дан нам в непреложных природных законах, а не выдуман больными на голову человеками?

mirage
()
Ответ на: комментарий от mirage

Душераздирающее зрелище... :(
1. Я привёл пример того как сделать стабильный API, пейте витамины или поменяйте работу, если нет физических фозмоможностей понять, как это использовать с любым браузером.

2. За поддержку Конкверора, Оперы, сафари и прочей экзотики не платят. Т.е. если они не следуют глюкам FF или IE они пролетают.

3. А вы похоже происходите из рассы роботов и не способны к обучению. Попродуйте пойти по пути upgrade.

4. Исходить желчью по поводу стандартов, ниже моего достоинства, но я не мешаю вам этого делать, хотя и считаю это глупым.

NonHuman ★★★
() автор топика
Ответ на: комментарий от NonHuman

>Душераздирающее зрелище… :(

плюсмильён.

>1. Я привёл пример того как сделать стабильный API

вы привели пример феерической ламерской хуеты.

>пейте витамины или поменяйте работу

я как-нибудь сам решу, что делать. благо, моя работа вовсе не связана с вебом.

>2. За поддержку Конкверора, Оперы, сафари и прочей экзотики не платят. Т.е. если они не следуют глюкам FF или IE они пролетают.

я надеюсь, благодарные пользователи этих браузеров вас когда-нибудь встретят.

>3. А вы похоже происходите из рассы роботов и не способны к обучению.

зато у меня в моск вмонтирован хороший спеллчекер. «расы», да.

>4. Исходить желчью по поводу стандартов, ниже моего достоинства, но я не мешаю вам этого делать, хотя и считаю это глупым.

к счастью, идиотские стандарты меня не кормят, и потому я могу высказать о них то, что думаю. [абзац перехода на личности вырезан]

mirage
()
Ответ на: комментарий от mirage

>я как-нибудь сам решу, что делать. благо, моя работа вовсе не связана с вебом.

:) Лирик? Так что-же вы делаете в теме о JavaScript если вы его
1. Не понимете.
2. Он вам не нужен.
3. Вы его ненавидите.
Шли бы тролить в другое место а проффесинальные темы оставьте профессионалам.

NonHuman ★★★
() автор топика
Ответ на: комментарий от NonHuman

телепат? шли бы телепатировать в другое место.

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

ненавижу я только «профессиАналов», которые пишут уёбищный код.

кстати, я не прочь бы увидеть мои слова, из которых следуют ваши 1, 2 и 3. если это не вещества у вас были, конечно (подозреваю, что именно они).

mirage
()
Ответ на: комментарий от mirage

1. Не понимете.
Следует из "вы привели пример феерической ламерской хуеты."
Хотя возможно это следствие комлекса неполноценности, перед профессионалами "ненавижу я только «профессиАналов», которые пишут уёбищный код. "
2. Он вам не нужен."благо, моя работа вовсе не связана с вебом.","к счастью, идиотские стандарты меня не кормят, и потому я могу высказать о них то, что думаю."
3. Вы его ненавидите. "идиотские стандарты".

NonHuman ★★★
() автор топика
Ответ на: комментарий от NonHuman

вы, аднака, савсем не читатель.

1. действительно, проверять конкретно браузер, а не caps — это феерическая ламерская хуета. какое отношение она имеет к языку — не ясно.

2. а-а-а, я понял: вы считаете, что javascript — «это вот та хуйнюшечка внутре брафзера». я вас удивлю: область применения js (будем точными: ECMAScript) намного шире, чем это видится из вашего веб-мирка.

3. каким хуем *w3c стандарты* связаны с *языком*? если бы вы дали себе труд немного почитать ветку, то смогли бы заметить, что именно *язык* мне весьма нравится. но вы же не читатель, вы гордый пейсатель.

mirage
()
Ответ на: комментарий от mirage

:)
1. Согласен, никакого отношения к языку это не имеет. Но если вы всё-же соберётесь с силами и успокоитесь, то, я надеюсь, сможете осознать, что функция tellBrowserName() не должна проверять caps. Постарайтесь понять, что это был пример API. Я бы даже сделал ставку на то, что до вас это дойдёт со временем. Но не переживайте, каждой божьей твари есть место под солнцем. Найдёте и вы своё.

2. Если вы прочтёте название темы(рекомендую) то поймёте, что здесь обсуждается JS в котексте web.
Приведите, pls, примеры где JS используется кроме как для Web. "намного шире", это как минимум сопоставимо по масштабам с Internet.

3. Язык разрабатывался, разрабатывается и будет разрабатываться как язык для работы с html document. Если вы не видите связи, то мне вас просто жаль.

NonHuman ★★★
() автор топика
Ответ на: комментарий от NonHuman

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

mirage
()
Ответ на: комментарий от mirage

Well, that's a good omen.
Мне действительно неинтересны гуёвые приложения? но было бы интересно узнать о том, где используется JavaScript помимо интернета.

NonHuman ★★★
() автор топика
Ответ на: комментарий от NonHuman

ключевое слово — «script». отличный скриптовый язык (и движок), который не менее отлично встраивается в любой софт, где нужна такая функциональность. как activescript под оффтопом, как spidermonkey под никсами. дёшево и сердито.

mirage
()
Ответ на: комментарий от NonHuman

видел несколько виндовых софтин (имена уже не вспомню). я сам частенько встраиваю, когда надо скриптование, а на Lua у заказчика аллергия.

mirage
()
Ответ на: комментарий от tailgunner

Спасибо, посмотрю. Просто не сталкивался пока.

NonHuman ★★★
() автор топика
Ответ на: комментарий от mirage

Ну, я бы сказал, что это исключение из правил. Не видел ничего такого(ок. уже кроме эклипс). Из того, что я видел, встраивают Gecko и соответственно используют XML/XUL а оно без DOM никуда.

NonHuman ★★★
() автор топика
Ответ на: комментарий от NonHuman

далеко не весь написаный софт выходит «на публику». много софта пишут исключительно для конкретного заказчика. я работал в конторе, которая своеобразный «векторный редактор» делала, там тоже был js через activescript.

mirage
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.