Javascript的本机`instanceof`运算符和MooTools的`instanceOf`函数有什么区别?

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

任何人都可以解释instanceOf()函数的区别或目的吗?

最佳答案
instanceOf是typeOf的补充,它是内部MooTools函数,它们比其本地对应函数更好地执行Type遍历.

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中很多类型的构造函数都会装饰对象以简化duck类型,因此typeOf和instanceOf可以使用实际有意义的结果.

还阅读了mootools Type function

转载注明原文:Javascript的本机`instanceof`运算符和MooTools的`instanceOf`函数有什么区别? - 代码日志