Jak mogę sprawdzić, czy obiekt JavaScript jest implementacją interfejsu przy użyciu Google Closure inheritance mechanism?Sprawdź, czy obiekt jest implementacją interfejsu w klasie klasy zamknięcia Google
nie mogłem znaleźć żadnego śladu my.Animal
w obiektach stworzonych przez new my.Dog()
i object instanceof my.Animal
nie działa. Jedyną informacją na temat interfejsu są błędy kompilatora, gdy zapomniano zaimplementować metody w klasie potomnej.
/**
* @interface
*/
my.Animal = function() {};
/**
* Does something.
* @return {string}
*/
my.Animal.prototype.doSomething;
/**
* @constructor
* @implements {my.Animal}
*/
my.Dog = function() {};
/** @inheritDoc */
my.Dog.prototype.doSomething() = function {
return "something";
}
var dog = new my.Dog();
console.log(dog instanceof my.Animal); // returns false
Jednym ze sposobów, znalazłem to w przybliżeniu test właściwości interfejsów, mimo że jest źle w tak wielu aspektach:
console.log(!!dog.doSomething); // returns true
Chciałbym uzyskać komentarz na temat tego, co jest nie tak, PRZED obniżeniem ceny. –