Làm cách nào để kiểm tra xem đối tượng JavaScript có đang triển khai giao diện bằng cách sử dụng Google Closure inheritance mechanism không?Kiểm tra xem đối tượng có đang triển khai giao diện trong khung lớp Google Closure
tôi không thể tìm thấy bất kỳ dấu hiệu của my.Animal
trong các đối tượng được tạo ra thông qua new my.Dog()
và object instanceof my.Animal
đã không làm việc. Thông tin duy nhất về giao diện là lỗi trình biên dịch khi quên thực hiện các phương thức trong lớp con.
/**
* @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
Một cách tôi tìm thấy là xấp xỉ thử nghiệm cho các tài sản của các giao diện, mặc dù đó là xấu trong rất nhiều khía cạnh:
console.log(!!dog.doSomething); // returns true
Tôi rất muốn nhận được nhận xét về những điều sai trái TRƯỚC KHI được giảm giá. –