Показать сообщение отдельно
  #378 (permalink)  
Старый 11.01.2014, 01:50
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus7
 
Регистрация: 08.01.2014
Сообщений: 354

Чо-то мне кажется это слишком медленно, так что завязываю и снова возвращаюсь к UI.js

function Class( description ) {
    return Class.extend( description );
}


Class.extend = function( description ) {

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

    var prototype = new description;

    if (prototype.hasOwnProperty( 'constructor' )) {
        var constructor = prototype.constructor
    }
    else {
        var constructor = function() {}
    }

    constructor.prototype = prototype;
    constructor.prototype.parent = description.prototype;
    constructor.extend = this.extend;

    return constructor;
};



function parse( description ) {

    var code = description.toString().match( /\{([\s\S]*)\}/ )[1];
    var regExp = /parent[\s]*\.[\s]*(\w+)[\s]*\((.*?)\)/img;

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

    code = 'with(this){' + code + '}';

    return new Function( code );
}


// ИСПОЛЬЗУЕМ


Animal = Class.extend( function() {
    this.say = function() {
        alert( 'animal' )
    }
} );


Cat = Animal.extend( function() {
    this.say = function() {
        parent.say();
        alert( 'cat' );
    }
} )


new Cat().say();
Ответить с цитированием