Javascript
的 instanceof
操作符能够用来比较两个操作数的组织函数 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