Jump to content

Zeroglif

User
  • Posts

    46
  • Joined

  • Last visited

Everything posted by Zeroglif

  1. Все вместе правы одновременно. С одной стороны, если нужно показать схему решения, то нам не нужна ни "одноразовая" переменная, ни лишняя функция. Отсекать лишнее - правильно. С другой стороны, если вопрос исходит от ньюба, то он может начать копипастить в лоб - не будет кешировать ноду, не разберётся с объединением действий в одной функции и т.д. Чтобы "лишнее" не резало глаз можно было бы просто написать комментарии о возможных дополнительных обращениях и проч. И фффсё...
  2. Zeroglif

    split

    У строк есть свои достаточно гибкие методы, подойдёт для такого случая, к примеру: var s = 'man+woman=sex=children=problem', i = s.indexOf('='); alert( s.slice(0,i) ); alert( s.slice(i+1) ); Эт вряд ли, по ES строка от рега отделена в алгоритме (функция SplitMatch). Это теория. Практику можно проверять, подозреваю, большинство движков будут возиться с регом существенно дольше. От теста зависит, у меня FF3 медленнее в 2 раза, Опера9.63 в 5-6!!! раз, IE6 чуток, Хром почти одинаково...
  3. Он может быть в тему, если с другой стороны взглянуть - с точки зрения внимательного отношения к вложенным функциям, пережившим контекст в котором они были созданы. Часто бывает, что во внешней функции куча локальных данных, но замыканию нужна только часть из них, остальное удерживается просто так, заодно, т.к. замыкание "помнит" не значения, не отдельные свойства, а Scope целиком. Трудно сказать, что движки делают с "как-бы-не-нужными" замыканию свойствами, оптимизируют или нет.
  4. Параметр передаётся по значению. Функция 'createMyObject' живёт сама по себе, её уже держит несколько объектов - прототипы созданных объектов (через свойство 'constructor'), variable object того контекста, где этот конструктор создан (через window.createMyObject). Наличие переменных или параметров внутри внешней функции не влияет на то, как вложенная функция "запоминает" Scope, она это делает в любом случае, пусто там или не пусто.
  5. Там у вас функция вложенная нарисована, всё, что нужно она "запомнит" непосредственно при своём создании, есть переменные выше (в контексте конструктора, в глобальном контексте...) или их вообще нет - ей не интересно, она сохраняет Scope и всё.
  6. Экземпляры на то и экземпляры, чтобы быть единственными в своём роде. Конструктор (createMyObject) как был один, так и есть один, объект {value:inp}, как и метод alert создаются при каждом вызове конструктора.
  7. Какой объект занимает память в первом случае и не занимает во втором?
  8. Из функции обращение к переменной внутри функции быстрее, чем к переменной снаружи (теоретически и в большинстве случаев практически), само собой, разница едва видна под микроскопом. Глобальный объект нынче вовсю используется из-под юзверя, он использует расширения всякие браузерные, примочки, кривые а-ля гризманкиевские скрипты и так далее. В этом смысле уменьшение переменных в глобальном контексе желательно. Ну, и баги с идентификаторами пока есть, тоже могут зацепить имя переменной.
  9. Ага, считаем. В js-программировании.
  10. Похоже, это B.Новодворская до форума добралась. При помощи книжки "JScript is the best JavaScript" 1997 года выпуска, Валерильнишна с трудом, но вс?-таки внедрилась в здешнюю профессиональную среду, затем мастерски расфокусировала наше внимание, выпустив потешные лучи ненависти в сторону Оперы-жоперы и, наконец, когда число просмотров топика приблизилось к тр?м тысячам, сбросила маску первобытного яваскриптера и приступила к выполнению своей основной задачи - "комуняки - зло, КГБ - зло, комуняки - зло, КГБ - зло...". :)
  11. Там нет так называемого dcss (IE behaviors), обычный скрипт, просто он так написан.
  12. Вы судя по всему просто не знаете, как программировать на js кроссбраузерно. Скрипт на странице "про умножение" настолько прост по своему смыслу, что бедной Опере там даже не на чем капризничать. Выныривайте же, наконец, из девяностых годов и начинайте изучать кроссбраузерное программирование вместо того, чтобы терять время на смешные безаппеляционные выпады в адрес достойных браузеров. Когда научитесь - найд?те в сво?м скрипте 4-5 ошибок и упс... произойд?т чудо... Лучше "IE рулит, остальные - сосут!", взялись провоцировать тут холивар - надо действовать ж?стче. :mad:
  13. homm, Дополню. Смешит целенаправленное прописывание в тексте литералов true и false, если учесть, что любое вернувшееся из функции значение при дальнейшей проверке, допустим, при проверке через if() в следующей функции будет снова конвертировано в значение типа Boolean и проверено. То есть вы легко можете выпустить из функции непосредственно req, будь в этой переменной null или object, не важно. Если же вы вс?-таки страшно захотели вернуть именно булев, то опять-таки конвертируйте req на месте (во флажковом стиле - !!req или более сложно, но нагляднее - Boolean(req)), а прописывать руками в такой операции тру и фалс - это как-будто на минуту забыть про конвертацию типов в javascript вообще. Масло масляное. И последнее - в вашей функции уже проверялось значение req, из этой ветки можно было и вернуть необходимое значение, не дублируя проверку...
  14. У каждого браузера своя собственная реализация XMLHttpRequest (если она есть), она может быть почти какая угодно с точки зрения объектов в стандарте ECMA-262 или комформной/не комфорной с точки зрения документов W3C, но разная реализация никак не отвергает тот факт, что в IE7+ появился и может быть использован отдельный XMLHttpRequest Object заодно с единственно возможным ранее объектом ActiveX. Отсюда фраза: "XMLHttpRequest так до сих пор в ИЕ и нет, его эмулирует ActiveX" приблизительно такая же правильная и точная, как и фраза оппонента про то, что "XMLHttpRequest появился ещ? в IE4". AKS, вы хотите местный холивар про "жоперу" и флейм про "шизофреников" возвести в степень? Только jQuery тут и не хватало. Если дело выгорит, то я уже точно не вытерплю и вступлю с темами "bmw vs. гнусный мерин" и "плазма pioneer vs. гов?нный панас"...
  15. Алекс, homm, как же вы весело спорите - один говорит, что XMLHttpRequest появился ещ? в IE4, другой говорит, что самого XMLHttpRequest так до сих пор в IE и нет. Молодцы. в какую версию IE впендюрили XMLHTTP впервые? в какую версию IE впендюрили XMLHTTP в виде нативного объекта XMLHttpRequest?
  16. Модераторы ещ? живы или уже все вымерли от смеха? Перенесите же, наконец, эту ветку из javascript-a куда-нибудь на Луну...
  17. Ну, я, например, не знаю ответ на вопрос "почему?". Почему изменилось поведение Оперы?
  18. Вы не меняли, за вас Опера меняла, не спросясь. Имеет полное право. А тому, который меняет, личный опыт того, который не меняет, поможет слабо. Сомневаюсь, что забиваете. Вы по таким сайтам ходите каждый день.
  19. На ориентировочный момент написания скрипта Опера по дефолту представлялась как "Netscape", заодно и "Microsoft Internet Explorer". Так что программист, названный тут имбецилом, вообще не отсекал Оперу, и скрипт прекрасно работал, как бы вы его тут не переводили на свой язык. Сегодня куча браузеров разрешает трогать свои "идентифицирующие" строки, другая куча народу этим пользуется, спуфят чего не попадя, а тем более достаточно продвинутые пользователи Оперы. Поэтому любой скрипт для незнакомой среды, базирующийся на строках агентов (UA), по сути может работать или не работать с любым браузером. Наличие строк однозначно говорит только о наличие строк и ни о ч?м больше.
  20. Гы. Подвигаю-ка я особо настойчивых в правильном направлении: 1) Является ли значение свойства 'appName' однозначным идентификатором конкретного браузера? 2) Каким было это значение у Оперы во времена, когда был написан этот скрипт (где-то 1999-2000гг.)? 3) Может ли пользователь современной Оперы самостоятельно менять значение 'appName' в настройках? 4) Могут ли пользователи других браузеров самостоятельно менять значение 'appName'? Ответы на эти вопросы должны привести к правильному пониманию скрипта. Если понимание не прид?т, то прид?тся мне выкладывать алерты, свидетельствующие о том, что и современная Опера этот скрипт обработает, и тем более Опера врем?н написания скрипта, допустим, какая-нибудь 3.60...
  21. AKS, когда homm and zoNT настойчиво тут разъясняют "идиотам", что скрипт "написан так, чтобы он ничего не делал в Опере (и других браузерах, кроме ИЕ и мозиллы)" - это конечно же неправда, этот скрипт может работать или не работать в любом из браузеров. Почему он не работает у задавшего вопрос в Опере и чья тут вина решайте сами.
  22. В отношении javascript-a (если включить туда же BOM/DOM и т.п. и не считать последние пару лет) Опера всегда была самой непредсказуемой и фиче-неподдерживающей при самом быстром (за исключеним некоторых мест) движке. К тому же никак это не документировала, чем ещ? больше осложняла жизнь js-программисту. И в том, что у человека (про которого, кстати, тут все уже забыли) не заработал в Опере этот архаичный скрипт, виновата в какой-то степени и сама Опера...
  23. В этой ветке единственный разумный - Emm, в его скромном посте ключ ко всему. Другая там проверка. Потешная. Это проблема Оперы в том числе. Мало, кто пишет скрипты на 10 лет впер?д. Вы пишите?
  24. /******************************************************** cssFloat --> код не для всех --> неправильно styleFloat --> код не для всех --> неправильно ... --> код не для всех --> неправильно cssFloat + styleFloat + ... --> кроссбраузерный код --> ??? *********************************************************/
×
×
  • 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