【发布时间】:2015-01-21 09:46:46
【问题描述】:
如何测试 JavaScript 对象是否是使用 Google Closure inheritance mechanism 的接口的实现?
我在通过new my.Dog() 和object instanceof my.Animal 创建的对象中找不到任何my.Animal 的提示不起作用。关于接口的唯一信息是忘记在子类中实现方法时的编译器错误。
/**
* @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
我发现的一种方法是近似测试接口的属性,尽管这在很多方面都很糟糕:
console.log(!!dog.doSomething); // returns true
【问题讨论】:
-
我很想在被否决之前得到一个关于有什么问题的评论。
标签: javascript google-closure-compiler google-closure google-closure-library