Bir JavaScript nesnesinin Google Closure inheritance mechanism kullanarak bir arabirimin uygulanması olup olmadığını nasıl sınayabilirim?Nesnenin Google Closure sınıf çerçevesindeki arabirim uygulaması olup olmadığını sınama
ben işe yaramadı new my.Dog()
ve object instanceof my.Animal
yoluyla oluşturulan nesneleri my.Animal
herhangi bir ipucu bulamadık. Arabirim hakkında tek bilgi, alt sınıftaki yöntemleri uygulamak için unutmadan derleyici hatalarıdır. Bulduğum
/**
* @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
bir yolu böylece birçok konuda kötü olsa arayüzleri özelliği için yaklaşık teste geçerli:
console.log(!!dog.doSomething); // returns true
Neyin yanlış olduğuna dair bir yorum almayı çok isterim. –