Comments 18
Спасибо за старания!
Еще можно отлаживать JS-скрипты в Visual Studio, с опцией «debugger». Инф. по теме: javascript.ru/tools/basic/internet-explorer
Лично я про такой слышу первый раз, спасибо за ссылку.
Если вам нетрудно, в двух словах расскажите о его особенностях/достоинствах? А то трудно себе представить что-то лучшее, чем Firebug :)
Если вам нетрудно, в двух словах расскажите о его особенностях/достоинствах? А то трудно себе представить что-то лучшее, чем Firebug :)
Я не знаю как сейчас у Firebug дела с утечками памяти, но в свое время это было одной из причин перехода на Venkman. Отличий в принципе немного, Venkman более классический что ли, больше напоминает обычный IDEшный дебаггер, как в той же Visual Studio, например.
Ну и насколько мне известно у Firebug не все в порядке с отладкой XUL-приложений. Если ситуация изменилась, буду рад услышать об этом от знающих людей, потому что все еще очень уважаю этот девелоперский комбайн.
Ну и насколько мне известно у Firebug не все в порядке с отладкой XUL-приложений. Если ситуация изменилась, буду рад услышать об этом от знающих людей, потому что все еще очень уважаю этот девелоперский комбайн.
venkman — изначальный отладчик, поставлявшийся вместе с мозиллой, когда от нее еще не отпочковался файрфокс.
некоторое время спустя, он был доступен только для мозиллы/симанки, но затем его выпустили в виде фарфокс аддона.
именно как дебаггер, он лучше файрбаговского. там больше возможностей, нагляднее.
но, файрбаг замечателен интеграцией с дом-инспектором, навигатором по коду, стилями и т.д.
в общем, для глубоко яваскриптовых задач venkman рулит. для смешанных — файрбаг.
некоторое время спустя, он был доступен только для мозиллы/симанки, но затем его выпустили в виде фарфокс аддона.
именно как дебаггер, он лучше файрбаговского. там больше возможностей, нагляднее.
но, файрбаг замечателен интеграцией с дом-инспектором, навигатором по коду, стилями и т.д.
в общем, для глубоко яваскриптовых задач venkman рулит. для смешанных — файрбаг.
Девид Блейн скукожил все скроллбары на скриншотах.
Приятно, что драгонфлай уже вполне прилично смотрится на фоне остальных и даже попал в список стабильных.
Приятно, что драгонфлай уже вполне прилично смотрится на фоне остальных и даже попал в список стабильных.
Кстати, полезный совет для отлаживания скриптов в Опере:
Обычно во время отладки нужно перезагружать страцу, дабы посмотреть поведение при разных действиях. Но обычно получать новый код с сервера не требуется, нужно чтобы просто браузер переоткрыл страницу, заново отрендирил то, что есть у него в кеше. Я использую для этого жест «GestureDown, GestureUp» который по умолчанию забит под перезагрзку. Чтобы у себя сделать так-же нужно в «Инструменты—настройки—дополнительно—управление—профили мыши—правки—application—GestureDown, GestureUp» поставить «Refresh display». Иногда бывает полезно не только во время отладки, а просто когда нужно «сбросить» скрипты на странице, а перезагружать с сервера не нужно.
Обычно во время отладки нужно перезагружать страцу, дабы посмотреть поведение при разных действиях. Но обычно получать новый код с сервера не требуется, нужно чтобы просто браузер переоткрыл страницу, заново отрендирил то, что есть у него в кеше. Я использую для этого жест «GestureDown, GestureUp» который по умолчанию забит под перезагрзку. Чтобы у себя сделать так-же нужно в «Инструменты—настройки—дополнительно—управление—профили мыши—правки—application—GestureDown, GestureUp» поставить «Refresh display». Иногда бывает полезно не только во время отладки, а просто когда нужно «сбросить» скрипты на странице, а перезагружать с сервера не нужно.
Если не ошибаюсь, то ключевое слово debugger (создание breakpoint в скрипте) актуально только для IE.
Отлично вылетает при разрешенных настройках отладки в IE, и установленном MS Script Debugger или VS
На практике в 99% случаев пошаговая отладка не нужна, достаточно видеть место вылета. Дальше прямо в консоли подтвердить/опровергнуть догадку :).
И если в Opera и FF это видно в error console, то в IE реальное место помогает определить Script debugger (dev toolbar пользовал очень давно в альфах, посему не могу сказать с уверенностью).
Случаи с пошаговой отладкой (лично в моем оптыте за десяток лет) единичны.
За статью респект, возможно очень поможет многим людям. Можно было наврное включить сюда и Хромого. Консоль и инспектор в нем есть.
Отлично вылетает при разрешенных настройках отладки в IE, и установленном MS Script Debugger или VS
На практике в 99% случаев пошаговая отладка не нужна, достаточно видеть место вылета. Дальше прямо в консоли подтвердить/опровергнуть догадку :).
И если в Opera и FF это видно в error console, то в IE реальное место помогает определить Script debugger (dev toolbar пользовал очень давно в альфах, посему не могу сказать с уверенностью).
Случаи с пошаговой отладкой (лично в моем оптыте за десяток лет) единичны.
За статью респект, возможно очень поможет многим людям. Можно было наврное включить сюда и Хромого. Консоль и инспектор в нем есть.
упс, не сразу понял, что перевод :(
странно… я наоборот очень часто использую именно пошаговую отладку.
а знать «место вылета» это как-то однобоко — нет полной картины работы скрипта, да и всего приложения.
а знать «место вылета» это как-то однобоко — нет полной картины работы скрипта, да и всего приложения.
Object.clone = function(originalObject) {
var obj = {};
for (var prop in originalObject) {
obj[prop] = originalObject[prop];
}
return obj;
}
Вы всё равно не решили проблему, так как в прототип может написать другая библиотека, другой программист, или вам когда-нибудь самому понадобится.
Решением будет
Object.clone = function(originalObject) {
var obj = {};
for (var prop in originalObject) {
if(originalObject.hasOwnProperty(prop))
obj[prop] = originalObject[prop];
}
return obj;
}
К тому же вариант с добавлением функции в prototype мне нравится больше.
Можно использовать переопределение функции для других типов
Object.prototype.clone = function() {… }
Date.prototype.clone = function() {… }
MyClass.prototype.clone = function() {… }
Тогда clone будет работать прозрачно для любых объектов.
И возможно правильнее будет дописать саму функцию
не копировать функции
при копировании объектов — копировать их не по ссылке, а их функцией clone
тоже самое с массивами
не копировать функции
при копировании объектов — копировать их не по ссылке, а их функцией clone
тоже самое с массивами
А где ссылка на оригинал?!
Sign up to leave a comment.
Современная отладка JavaScript