Есть система в которой активно используются классы, созданные с помощью библиотеки prototype. Классы могут быть унаследованы друг от друга.
К примеру существует такая иерархия:
var Animal = Class.create({
initialize: function(name) {
this.name = name;
}
});
// subclassing Animal
var Snake = Class.create(Animal, {
initialize: function($super, name) {
$super(name); // вызывается всегда в самом начале конструктора производного класса
this.len = 5; // дополнительные свойства. (этот код можно вынести в отдельную функцию и вызывать позже)
},
speak: function() {
alert(this.name + " says: hissssssssss, len: " + this.len);
}
});
В коде создается переменная типа Animal:
var a = new Animal('test Animal');
и добавляется во всякие разные массивы.
Подскажите пожалуйста, можно ли у этой переменной сменить тип на Snake так, что-бы у переменной "а" появились свойства и методы из класса Snake?