类型③instanceof 操作符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类型③instanceof 操作符相关的知识,希望对你有一定的参考价值。

instanceof 操作符用来比较两个操作数的构造函数。只有在比较自定义的对象时才有意义。 如果用来比较内置类型,将会和 typeof 操作符 一样用处不大。

比较自定义对象

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

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

// 如果仅仅设置 Bar.prototype 为函数 Foo 本身,而不是 Foo 构造函数的一个实例
Bar.prototype = Foo;
new Bar() instanceof Foo; // false

instanceof 比较内置类型

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

‘foo‘ instanceof String; // false
‘foo‘ instanceof Object; // false

有一点需要注意,instanceof 用来比较属于不同 javascript 上下文的对象(比如,浏览器中不同的文档结构)时将会出错, 因为它们的构造函数不会是同一个对象。

结论

instanceof 操作符应该仅仅用来比较来自同一个 JavaScript 上下文的自定义对象。 正如 typeof 操作符一样,任何其它的用法都应该是避免的。

以上是关于类型③instanceof 操作符的主要内容,如果未能解决你的问题,请参考以下文章

2.25 Java基础总结 ①多态②向上向下转型③instanceof

四. Java继承和多态5. instanceof 运算符

instanceof操作符

instanceof 操作符 接口 多态

10.4 使用instanceof操作符判断对象类型

教妹学Java:判断对象的类型,instanceof关键字