我正在尝试在JavaScript中为Web实现一个GTK +灵感的小部件工具包。其中一个构造链是
gtk.widget => gtk.container => gtk.bin => gtk.window
每个gtk.widget
都有一个showAll
方法,当且仅当widget
是gtk.container
或衍生产品(例如gtk.bin
或{{ 1}}),将以递归方式显示该窗口小部件的子项。显然,如果它不是gtk.window
或衍生物,我们不应该做任何事情,因为有问题的小部件不能包含任何内容。
供参考,这是我的继承功能;它可能不是最好的,但它是一个开始:
gtk.container
我知道我可以检查这样的直接构造函数:
function inherit(target, parent) {
target.prototype = new parent;
target.prototype.constructor = target;
}
但是,这只测试直接构造,而不是测试对象是if (this.constructor === gtk.container) ...
还是gtk.bin
。如何测试gtk.window
是否在构造函数链中某处?