测试构造函数链中的构造函数

时间:2010-12-23 11:38:48

标签: javascript

我正在尝试在JavaScript中为Web实现一个GTK +灵感的小部件工具包。其中一个构造链是

gtk.widget => gtk.container => gtk.bin => gtk.window

每个gtk.widget都有一个showAll方法,当且仅当widgetgtk.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是否在构造函数链中某处?

1 个答案:

答案 0 :(得分:2)

使用instanceof运算符:

if (this instanceof gtk.container) ...