Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Унылого треша тред (https://javascript.ru/forum/offtopic/47728-unylogo-tresha-tred.html)

Maxmaxmaximus7 11.01.2014 05:45

пофиксил, ускорил скорость работы) добавил поддержку статических, приватных и даже публичных свойств =)

function Class( description ) {

    return Class.extend( description );

}



Class.prototype['constructor'] = function() {};



Class['extend'] = function( description ) {

    description = parse( description );
    description.prototype = this.prototype;

    var prototype = new description( description.prototype, constructor );
    var _constructor = prototype['constructor'];


    function constructor() {
        return _constructor.apply( this, arguments );
    }

    constructor.prototype = prototype;
    constructor['extend'] = this['extend'];

    return constructor;
};



function parse( description ) {

    var code = description.toString().match( /\{([\s\S]*)\}$/ )[1];

    code = parentSupport( code );
    code = privateSupport( code );
    code = publicSupport( code );

    return new Function( 'parent,static', code );
}



function parentSupport( code ) {

    var regExp = /\bparent\b\s*\.\s*(\w+)\s*\((.*?)\)/img;

    code = code.replace( regExp, function( match, method, params ) {
        var separator = /\S/.test( params ) ? ',' : '';
        return 'parent.' + method + '.call(this' + separator + params + ')';
    } );

    return code;
}



function privateSupport( code ) {

    var fix = '___';
    var regExp = /\bprivate\b.([\w_]+)/img;

    code = code.replace( regExp, function( match, prop ) {
        return 'this.' + fix + prop + fix;
    } );

    return code;
}



function publicSupport( code ) {

    var regExp = /\bpublic\b.([\w_]+)/img;

    code = code.replace( regExp, function( match, prop ) {
        return 'this.' + prop;
    } );

    return code;
}

//########################################################  static

var Cat = new Class( function() {

    this.constructor = function() {
        static.cnt++
    }

    static.cnt = 0

} )

new Cat();
new Cat();
new Cat();

alert( Cat.cnt ) // 3

//########################################################  private

var Cat = new Class( function() {

    public.name = 'Cat'
    private.age = 11;

} );

var q = new Cat();

alert( q.name ); // Cat
alert( q.age ); // undefined

Maxmaxmaximus7 11.01.2014 06:54

если кто не понял, это все шутка :yes: потому как пилить норм парсер мне влом) мне ни разу не встречалась необходимость в наслеовании классов если честно за всю жизнь. Ну ни разу вот, например ни разу не приходилось наследовать что-то от евент эмиттера, я все делаю проще просто. Если появляется необходимость в наследовании, значит - сделал сложно, и я переделываю.

Maxmaxmaximus7 11.01.2014 07:20

жалко правда эти васяны не разрешают использовать слово super. вообще вымораживает, могли бы и варнинг бросать.

melky 11.01.2014 16:14

Цитата:

Сообщение от Maxmaxmaximus7 (Сообщение 291591)
Если появляется необходимость в наследовании, значит - сделал сложно, и я переделываю.

ржунимагу :lol: а как же абстракции?

Maxmaxmaximus7 11.01.2014 16:41

Ты про абстрактные классы или чо)?

Maxmaxmaximus7 16.01.2014 07:01

Дайте мне движение сделать!
 
И всем типа похуй что причина соперничества людей - дефицит благ, таких например как возможность не работать а результат работы получать, и этот дефицит устраняется автоматизацией скучных и рутиных работ на которых люди не хотят работать, ливтеров заменили автоматическими лифтами, ткачих заменили ткатскими станками, гаишников и водителей заменят автопилотами, а быдло лишь возится в своих социальный проблемах не видя всей картины в целом. ВСЕ НАШИ ПРОБЛЕМЫ ТЕХНИЧЕСКИЕ, А НЕ ПОЛИТИЧЕСКИЕ! То есть сам факт СОПЕРНИЧЕСТВА ЛЮДЕЙ УЖЕ есть факт проблемы. И проблема явно не в том как более эффективно соперничать с другими людьми. А проблема в дефиците благ. Вы же, делаете революции хуюции и прочее, совершенно не видя причин. Вы же тупо соперничаете, даже не пытаясь устранить причину соперничества, относясь к соперничеству и дефициту благ, как к чему-то незыблимому.

Люди делятся на группировки называемые странами, на племена, соперничают за ресурсы, и прочее.. И только горстка ученых развивает технологии чтобы устранить этот дефицит и действительно РЕШИТЬ ПРОБЛЕМЫ.

НО МЫ ТО С ВАМИ НЕ ТАКИЕ!!! МЫ БУДЕМ ПИЗДИЦА ДРУГ С ДРУГОМ ЗА БАНАНЫ ЗА МЕСТО ТОГО ЧТОБЫ УВЕЛИЧИТЬ УРАЖАЙНОСТЬ! И КУКАРЕКАТЬ "ВОТ ПЛОХОЙ ЧЕЛОВЕК! БОЛЬШЕ БАНАНОВ ЧЕМ Я ЗАБРАЛ!!! РЕВОЛЮЦИЯ!!!" !

Вы наверное еще и думаете что МЕНТЫ ПЛОХИЕ раз НЕ СДЕРЖИВАЮТ ЖАДНОСТЬ ВОЗНИКАЮЩУЮ В УСЛОВИЯХ ДЕФИЦИТА... Игнорируя тот факт что проблема все таки в дефиците, а не в сдерживании жадности.

СТР0ОNЕ Р0БОТОВ8 б9ЛТtь!1!


nice_try 16.01.2014 10:58

человек = животное, замени слово человек в своем тексте на животное и ты поймешь абсурдность своих суждений

Maxmaxmaximus7 16.01.2014 10:59

человек - животное, абсурдности в суждениях не заметил. что я делаю не так?

nice_try 16.01.2014 11:01

Цитата:

Сообщение от Maxmaxmaximus7 (Сообщение 292402)
что я делаю не так?

живешь

Maxmaxmaximus7 16.01.2014 11:14

:yes:


Часовой пояс GMT +3, время: 05:58.