Помимо создания экземпляра, как определить, происходит ли ClassA от ClassB в ActionScript? - PullRequest
2 голосов
/ 23 сентября 2009

Мне нужно определить, происходит ли один класс (прямо или косвенно) от другого.

Я могу сделать

var testInstance : Object = new ClassA();
if (testInstance is ClassB)
    ...

но я ненавижу создавать экземпляр только для проверки происхождения. Я надеялся, что если (ClassA это ClassB) будет работать, но это не похоже.

В справке говорится

isPrototypeOf (theClass: Object): Boolean * * +1011 Указывает, находится ли экземпляр класса Object в цепочке прототипов объекта, указанного как
параметр.

На самом деле я не понимаю прототипы ActionScript (думаю, это может свести меня с ума), но я надеюсь, что объекты Class могут каким-то образом воспользоваться информацией о наследовании.

Спасибо

1 Ответ

0 голосов
/ 23 сентября 2009

Прототипы - это экземпляры класса (для наследования классов) или родительского класса (для наследования прототипов). Попробуйте:

Object.prototype.extends=function (theClass:Object):boolean {
    return this.prototype instanceof theClass;
}

ClassA.extends(ClassB);

Наследование прототипов в ActionScript 3 в наследование на основе классов. Вы больше не используете прототипы в Actionscript, но это не сложная концепция, и у нее есть свои применения, так что вам было бы неплохо ее изучить. Прочитайте « История поддержки ООП ActionScript » и « Прототип объекта » из « Расширенные темы »

...