细说 Javascript 范例篇(三) : instanceof 操作符

Javascriptinstanceof 操作符能够用来比较两个操作数的组织函数 constructor。但这个只要在比较自定义对象才有意义。当用来比较 Javascript 内置的对象时就如同上篇引见的操作符 typeof 一样用途不大。

比较自定义对象

function Foo() {}
function Bar() {}
Bar.prototype = new Foo();

new Bar() instanceof Bar; // true
new Bar() instanceof Foo; // true

// This just sets Bar.prototype to the function object Foo,
// but not to an actual instance of Foo
Bar.prototype = Foo;
new Bar() instanceof Foo; // false

比较内置对象

new String('foo') instanceof String; // true
new String('foo') instanceof Object; // true

'foo' instanceof String; // false
'foo' instanceof Object; // false

这里有点迥殊主要的处所须要注重,那就是 instanceof 操作符没法比较两个处于完整差别上下文坏境下的对象(比方浏览器中的差别文档对象)。这是由于它们的组织函数不可能会是同一个对象。

总结

综上所述,我们晓得 instanceof 操作符最合适的运用坏境是比较两个雷同上下文背景下的自定义对象的组织函数,正如上篇引见的 typeof 操作符,其他坏境下运用作用不大。

@nightire 凡哥的博文 – 《明白 JavaScript(三)》 也引见了部份关于 instanceof 操作符的运用。

参考

http://bonsaiden.github.io/JavaScript-Garden/#types.instanceof

    原文作者:StephenLee
    原文地址: https://segmentfault.com/a/1190000000507044
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞