Показать сообщение отдельно
  #1 (permalink)  
Старый 30.06.2009, 20:41
Интересующийся
Отправить личное сообщение для phprus Посмотреть профиль Найти все сообщения от phprus
 
Регистрация: 29.07.2007
Сообщений: 13

Возможна ли смена типа созданного объекта в Javascript?
Есть система в которой активно используются классы, созданные с помощью библиотеки 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?
Ответить с цитированием