Пасоны, глядите я новый Class написал =)
function Class( description ) {
return Class.extend( description );
}
Class.extend = function( description ) {
description.prototype = this.prototype;
var prototype = new description;
var constructor = prototype.constructor || function() {};
constructor.prototype = prototype;
constructor.extend = this.extend;
return constructor;
};
// используем
var Animal = new Class(function() {
this.say = function() {
alert( this.name )
}
});
var Cat = Animal.extend(function() {
this.constructor = function() {
this.name = 'Cat';
}
})
var Rabbit = Animal.extend(function() {
this.constructor = function() {
this.name = 'Rabbit';
}
})
var q = new Cat();
var w = new Rabbit();
q.say(); // Cat
w.say(); // Rabbit
щас добавлю сахар для перекрытия и обращения к полям без this
Чтобы можно было писать так
var Animal = new Class( function() {
constructor = function() {
name = 'Animal'
age = 11
}
say = function() {
alert( name )
}
} );
и имелось ввиду именно обращение к this
А добавлю перекрытие чтобы к перекрытым родительским можно было обращаться как
parent.method