4

MooTools 有自己的instanceOf(instance, Type)功能。
我只能假设它与 Javascript 的本机instanceof运算符有些不同,但我似乎无法弄清楚是什么。

谁能解释该instanceOf()功能的区别或目的?

4

2 回答 2

3

instanceOf与之相辅相成的typeOf是内部 MooTools 函数,它们在类型遍历方面比它们的原生函数做得更好。

typeOf 在这方面稍微有用:

typeof []; // object
typeOf([]); // array
typeof new Date(); // object
typeOf(new Date()); // date

instanceOf 主要用于 Class,尽管它也适用于 Types 构造函数。

例如。

var foo = new Class(),
    bar = new Class({
        Extends: foo
    });

var foobar = new bar();

instanceOf(foobar, bar); // true
// but also due to Extends prototype chain and the constructor:
instanceOf(foobar, foo); // true

// as well as standard behaviour like
instanceOf([], Array); // true
instanceOf(4, Number); // true vs 4 instanceof Number == false

查看源代码: https ://github.com/mootools/mootools-core/blob/master/Source/Core/Core.js#L47-58

您可能会注意到 mootools 中的许多类型的构造函数都装饰了对象以简化鸭子类型,因此 typeOf 和 instanceOf 可以处理实际有意义的结果。

另请阅读mootools 类型功能

于 2012-09-22T11:12:41.537 回答
2

至少:

> "" instanceof String
false
> instanceOf("", String)
true
于 2012-09-21T20:18:09.143 回答