1. JavaScript / Говнокод #9817

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    if (
            (_methodName == "invoke") ||
            (_methodName == "auth") ||
            (_methodName == "resetAuth") ||
            (_methodName == "registerMethod") ||
            (_methodName == "registerAllMethods")
           )
        {
           throw "Illegal method name " +_methodName +" - service method with this name already exist";
        }
        else
        {
            eval("ComponentClient.prototype."+_methodName+" = function (_parameters) {return this.invoke(\""+_methodName+"\", _parameters)}")
        }

    И там много ещё такого

    Запостил: konsoletyper, 30 Марта 2012

    Комментарии (3) RSS

    • ComponentClient.prototype[_methodName] не годится уже?
      Ответить
      • _methodName = "auth = function(login, password) { alert(login + ' ' + password); }; {}.x"
        Ответить
      • Да это-то понятно. Впрочем, там всё ещё хуже. Например, вот этот код взят из метода, который объявлен у ComponentClient.prototype. Т.е. дёргается метод у экземпляра, а воздействует он аж на весь прототип. Про то, что у конкретного экземпляра можно добавлять методы или про то, что можно запросто создать свой класс (прототип), человек тем более не догадывается. Как, впрочем, и про то, что есть arguments. Дело в том, что код взят из велосипедной реализации RPC на JavaScript, и там нужно параметры явно заворачивать в массив при вызове метода... Ну вот откуда в людях берётся такая самоуверенность, что знаний нет, а велосипед написать хочется?
        Ответить

    Добавить комментарий