Jump to content

rgl

User
  • Posts

    109
  • Joined

  • Last visited

Everything posted by rgl

  1. Червертое отличие, foo.toString() выдаст слегка разные строчки, в случае если функция определена с new, в строке будет присутствовать слово anonymous
  2. Третье отличие: // ошибка в определении функции, с помощью try-catch перехвачена быть не может. try { var foo = function() { \*)+: } } catch( e ) {} // из-за ошибки в определении функции до алерта дело не дойтет alert( 1 ) // та же самая ошибка, но теперь ошибка времени выполнения, try-catch перехватывается, алерт срабатывает try { var foo = new Function( "\*)+:" ); } catch( e ) {} alert( 1 )
  3. Первое отличие: var x = 1; (function(){ var x = 2; var foo1 = function() { alert( x ); } var foo2 = new Function( "alert( x );" ); foo1(); // выдаст 2 foo2(); // выдаст 1 })(); Второе отличие: var foo1 = function() { alert( 1 ); } // тело функции жестко задано var s = "alert( 1 );" var foo2 = new Function( s ); // тело функции - переменная (строка) которая может быть получена в процессе выполнения, напр. введена пользователем, запрошена по AJAX, и т.д. В каком-то смысле можно использовать как альтернатива eval
  4. new позволяет определять функцию в случае, если ее тело заранее не известно, т.к. в этом случае можно использовать строковые переменные. Т.е. код функции можно получить в процессе выполнения скрипта. Хотя сложно придумать когда это может понадобиться.
  5. http://learn.javascr....ru/play/GI45Ub Ерунда какая-то. Сами-то поняли что написали? Модифицирую ваш пример, строку 16 заменяю на: Array.prototype.isPrototypeOf( x ), и получается одно и то же.
  6. И зачем новичку, который еще не дошел до главы про объекты, такое подсовывать? Запугать окончательно?
  7. Попробуйте "порыть" в сторону формата svg
  8. Проще показать на работающем примере, чем объяснять. // создаем несколько объектов var o1 = {}, o2 = {}, o3 = {}, o4 = {}, o5 = {}; // чтобы легче было за ними следить, даем им имена o1.name = "o1"; o2.name = "o2"; o3.name = "o3"; o4.name = "o4"; o5.name = "o5"; // выстраиваем объекты в цепочку. Пусть свойство next каждого объекта указывает на следующий в цепочке o1.next = o2; o2.next = o3; o3.next = o4; o4.next = o5; // o5.next ничего не присваиваем, он последний, т.е. следующего нет function tail(o) { while( o.next ) { alert( "заменяем "+o.name+" на "+o.next.name ); o = o.next; } alert( "возвращаем " + o.name ); return o; } tail( o1 ); Bumblebee, рекомендую в качестве упражнения проделать то же с функцией, как она написана в книжке, т.е. также проверить ее работу по шагам.
  9. Вполняется инструкция o = o.next и теперь переменная o указывает не на тот объект, что вначале, а на следующий. Потом все повторяется еще раз, и так до тех пор, пока следующий есть. Как только следующего нет, так цикл заканчивается, и возвращается тот самый объект, у которого нет следующего, т.е. последний.
  10. Ага, это понятно, но это разница в том, как применять, т.е. a instanceof Array - instanceof принимает в качестве аргументов сам объект, и предполагаемую функцию-конструктор. Array.prototype.isPrototypeOf( a ) - а тут нужно явно указывать предполагаемый прототип, т.е. писать не просто Array а Array.prototype Но вопрос не об этом, а о том, есть ли различие в возвращаемом значении или оно всегда одно и то же.
  11. var a = []; a instanceof Array // true Array.prototype.isPrototypeOf( a ) // true a instanceof Object // true Object.prototype.isPrototypeOf( a ) // true a instanceof Date // false Date.prototype.isPrototypeOf( a ) // false Вопрос: instanceof и isPrototypeOf всегда выдают одно и то же? Если да, то зачем нужно и то и другое если достаточно чего-то одного? Если нет - пример?
  12. Хорош учебник, если приводит примеры с ошибками. Пример не работает, т.е. всегда возвращает переданный функции параметр, а не последний объект в списке. А вот если поставить после цикла точку с запятой, то тогда работает правильно function tail(o) { for(; o.next; o = o.next) ; // тут добавлена точка с запятой return o; } но все равно так писать не надо, не лучший стиль. Я бы писал так: function tail(o) { while( o.next ) o = o.next; return o; } Нифига он не идет, а возвращает значение на первой же итерации. Видимо, автор учебника ошибочно полагал, что интерпретатор сам вставит точку с запятой после цикла (как он это иногда делает, но НЕ после цикла). Так что команда return o находится внутри цикла, и больше одной итерации цикла выполнено быть не может.
  13. Не знаю насколько хороший, но лично мне пошел на пользу http://www.intuit.ru/department/internet/cssbasics/
  14. setTimeout('preload_imageslist('img/<?=$_GET['link']?>1.gif');', 10000); Тройное вложение одинарных кавычек??
  15. var tmp = {}; for( i = 0; i < arr.length; ++i ) tmp[arr[i].toString()] = 1; for( i in tmp ) dim.push( parseInt(i) );
  16. Достаточно много народа еще пользуется экранами 1024ч768 и когда картинка по высоте была больше, были жалобы на две полосы прокрутки, поэтому картинку пришлось уменьшить.
  17. Полностью переработал. Теперь сделал с помощью map и area Чтобы циферки (номера участков) не мешали, картинку с настоящей картой положил вниз, поверх нее циферки-номера, еще сверху - прозрачный гиф вместе с map и area Критикуйте. http://forum.vzaokskom.ru/maps/limberova-interactive.php
  18. Простую шапку для форума (тема - коттеджные поселки) можете?
  19. event.stopPropagation() event.cancelBubble = true разные способы сказать, что не надо событие передавать дальше. Каждый из способов работает не во всех браузерах, комбинирование двух - лучше чем каждый по отдельности, но все-же не есть совсем правильное решение. См. обновленный пример (по той же ссылке). У меня в хроме и в опере работает и тот и другой способ, в IE - только event.cancelBubble = true if (event.stopPropagation) { // проверка будет ли работать первый способ event.stopPropagation() // если да, то его и использовать } else { event.cancelBubble = true // а если нет, то использовать второй } Но еще раз повторяю, это не готовое решение, а подсказка где искать :-)
  20. Я не спец, просто попытался подсказать в какую сторону искать. Вот это http://forum.vzaokskom.ru/test/bubbling.htm у меня работает в IE, опере и хроме, но не работает в FF Только надо не наводить а кликать
  21. function test(t) { alert(t.id); event.cancelBubble = true; }
  22. http://javascript.ru/tutorial/events/intro Внимательно почитал, того, что нужно, не нашел. Я могу запретить передачу ("всплывание") события от одного элемента к другому. Но как запретить ПОЯВЛЕНИЕ события? Вот, например, у меня есть картинка, на картинку наложена карта, в тэге area прописаны обработчики onmouseover и onmouseout На картинке находится текст (слева внизу), хочется вот чего - чтобы когда мышка попадает на этот текст (который находится внутри area, событие onmouseout для area не наступало! Перепробовал несколько вариантов, ничего не помогает http://forum.vzaokskom.ru/maps/test.htm Другими словами, можно ли сделать так, чтобы для мышки текста вообще не существовало, а пользователям он был виден?
  23. Пытаюсь заюзать map и area Возникает такая проблема - при наверении мышки на область правильно, как я того и хочу, отрабатывается onmouseover() но когда мышка попадает на текст (циферку) поверх картинки, отрабатывается onmouseout() хотя за пределы области мышка не уходит. Можно ли как-нибудь это обойти? Во флэше не могу, во-первых, он есть на у всех (вопреки привычному мнению, что word, excel и flash есть везде). Во-вторых, я флэша не знаю, не умею. А в-третьих, в дальнейшем пользователю будет выдаваться разная информация в таблице, в зависимости от его прав. Как это сделать на php я предлавляю, но не на флэше
  24. Делалось так - на фоне картинки размещались циферки, для этого использовалась программа inkscape, потом файл был сохранен в формате svg и из него уже скриптом вытаскивались координаты каждого числа и выводились уже в виде html
  25. Сделал карту коттеджного поселлка, а рядом с картой таблица с информацией о владельцах участков. При наведении мышки на строчку таблицы номер соответствующего участка подсвечивается. При наведении мышки на номер участка строчка в таблице тоже подсвечивается, и при необходимости таблица скроллится, но с задержкой в полсекунды, чтобы при при простом проведении мышки таблица не "прыгала", а нужная строчка появлялась только если мышку остановить на интересующем участке. Вся реальная информация находится в таблице, которая видна только в закрытом разделе форума, а это только демонстрашка. Покритикуйте: http://forum.vzaokskom.ru/maps/limber_draft.htm
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy