Обновить
213
0
Rostyslav@Kottenator

Front-End Engineer

Отправить сообщение
sedoy, зачем убиваешь себя?
Прошу прощения, это был ответ на коммент, я промахнулся
Извиняюсь, промахнулся. Ответ на ваш вопрос — чуть ниже
Вообще можно и оставить. Только я написал allowBreakpoints, что есть не очень хорошо. Лучше эту переменную не помещать в глобальный scope, а создать свой небольшой а-ля namespace (который будет подключаться на каждую страницу сайта):
var MyTools = {
    debug: {
      isOn: false
    }
}
// ...
// где-то в коде:
if (MyTools.debug.isOn)
    console.log(some_var)

* This source code was highlighted with Source Code Highlighter.

А ещё можно обернуть console.log своим методом:
var MyTools = {
    debug: {
        isOn: false,
        log: function() {
            if (this.isOn && window.console)
                console.log.apply(console, arguments);
        },
        stop: function() {
            if (this.isOn)
                debugger;
        }
    }
};
// ...
// где-то в коде:
MyTools.debug.log(some_var);
MyTools.debug.stop();

* This source code was highlighted with Source Code Highlighter.
Да, ОгнеЖук не идеален
Да, но на данном примере они идентичны
Я бы сказал, что это как игра в страйкбол — всё основывается лишь на доброй совести участника (тут — разработчика).

Да, можно менять существующий код. Ну так это же здорово! К примеру, если 3d-party JS-библиотека дала сбой, новая версия выйдет не скоро, но очень не хочется менять её исходный код — можно написать патч в отдельном файлике, который будет очень бережно исправлять ошибку в этой либе. А как выйдет новая версия с исправлением — выкинул патч и забыл. Вот (я пользуюсь таким подходом в работе с ExtJS)
Да, если кому интересены извращения с Javascript: для начала выполните следующий код через строку адреса (не бойтесь, это не форматнёт ваш винт):

javascript:_=~[];_={___:++_,$$$$:(![]+"")[_],__$:++_,$_$_:(![]+"")[_],_$_:++_,$_$$:({}+"")[_],$$_$:(_[_]+"")[_],_$$:++_,$$$_:(!""+"")[_],$__:++_,$_$:++_,$$__:({}+"")[_],$$_:++_,$$$:++_,$___:++_,$__$:++_};_.$_=(_.$_=_+"")[_.$_$]+(_._$=_.$_[_.__$])+(_.$$=(_.$+"")[_.__$])+((!_)+"")[_._$$]+(_.__=_.$_[_.$$_])+(_.$=(!""+"")[_.__$])+(_._=(!""+"")[_._$_])+_.$_[_.$_$]+_.__+_._$+_.$;_.$$=_.$+(!""+"")[_._$$]+_.__+_._+_.$+_.$$;_.$=(_.___)[_.$_][_.$_];_.$(_.$(_.$$+"\""+_.$_$_+(![]+"")[_._$_]+_.$$$_+"\\"+_.__$+_.$$_+_._$_+_.__+"(\\\"\\"+_.__$+_.__$+_.___+_.$$$_+(![]+"")[_._$_]+(![]+"")[_._$_]+_._$+", \\"+_.__$+_.__$+_.___+_.$_$_+_.$_$$+"\\"+_.__$+_.$$_+_._$_+_.$_$_+"\\"+_.__$+_.$_$+_.___+_.$_$_+_.$_$$+"\\"+_.__$+_.$$_+_._$_+"!\\\")"+"\"")())(); void 0;

А потом попытайтесь понять, как оно сработало :) Кому надо, могу сказать, где взял.
Замыканиями, наследованием и всевозможными манипуляциями с конструктором Function нужно пользоваться с умом. И моё мнение — чем проще код, тем лучше, и если есть возможность избежать извращений — лучше их избежать.

new Function([«x», «y»], (function(){ return «return x*y»; })()) — изврат
new Function([«x», «y»], «return x*y») — так лучше
new Function(«x», «y», «return x*y») — так ещё лучше
function(x, y) {return x*y} — так оптимально

Насчёт new function(){...} — жесть, конечно :)
Есть много памяти. Но так, к примеру, можно реализовать getter'ы и setter'ы (определив их в конструкторе, а атрибуты сделав просто переменными)
Cупер, спасибо за инфу, буду знать. В Интернете я её не нашёл (хотя я просто позабыл про VBscript)
хм. Ubiquityустановился корректно? Если да, то просто зайдите по этой ссылке и разрешите Firefox установить плагин для Ubiquity
Насчёт mpi — первое, что в голову пришло. Я даже не знал, что оно что-то значит
Извиняюсь, если где-то вдруг проскакивает украинский, не помiтив ;-)
господа минусующие — аргументируем, пожалуйста
Нет, я не о портах 80 и 443. Я про обновление href при, скажем, изменении port, и про обновление href & hostname & port при изменении host. И т.д. Изменяется один аттрибут => должны обновиться ещё парочку.

И я понимаю, что есть решения проще и меньше по объёму кода, но они не универсальны и не поддерживают вышеупомянутое обновление частей URL
Я неверно высказался. Тут скорее защита не от хакеров, а от других разработчиков :)
Да, это наверное самое главное препятствие перед использованием данных техник на практике
Спасибо, исправлю
Да, defineProperty — это неплохо. Вот только плохо, что все, кроме IE, не реализовали defineProperty. А IE — напротив, не реализовал get/set/__define[GS]etter__

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность