问题标签 [instanceof]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2932 浏览

java - Java 对象的最具体的子类?

我有两个类 A 和 B,其中 B 是 A 的子类,A 不是抽象的。因此,我可以拥有作为 A 实例的对象和作为 B 实例的对象(因此也是 A 的实例)。

如何区分仅是 A 实例的对象?

当然,我可以编写类似“object instaceof A && !(object instance of B)”之类的东西,但这是一个非常糟糕的设计,因为每次向 A 添加新的子类时我都需要更改代码。更好的选择?

0 投票
25 回答
182792 浏览

javascript - typeof 和 instanceof 有什么区别,什么时候应该使用另一个?

在我的特殊情况下:

或者

有没有关系,有什么区别?

附加资源:

JavaScript-Garden typeof vs instanceof

0 投票
8 回答
93383 浏览

java - Java中有类似instanceOf(Class c)的东西吗?

我想检查一个对象o是该类的实例C还是C.

例如,如果pPoint我想x.instanceOf(Point.class)成为的类true,也x.instanceOf(Object.class)成为true

我希望它也适用于盒装原始类型。例如, if xis an Integerthen x.instanceOf(Integer.class)should be true

有这样的事吗?如果没有,我该如何实现这样的方法?

0 投票
3 回答
14373 浏览

java - Java 的 instanceof 和 isInstance() 的 VB 等价物是什么?

本着c#问题的精神..

在 VB.NET 中比较类类型的等效语句是什么?

0 投票
4 回答
2226 浏览

java - Instanceof 和类型转换技术

我有一个关于技术和实现的问题,而不是要解决的实际问题。最近我创建了一个抽象类,我们称之为A,它定义了它的子类的共同行为。

我用它来构造几个子类 B、C 和 D,然后将它们传递给超类-子类结构之外的其他方法,该结构采用类型 A(因此能够处理所有 B、C 和 D)。

在 Java 中,我使用 instanceof 来检索真实类型,但最终我不得不对真实类型进行大量转换,而且看起来很乱。有人对如何使代码更干净有任何建议吗?

我尝试的一种方法是从超类的参数中重构子类类型的实例,这样我就可以使用它的实际类型来处理对象,从而避免类型转换。由于这些子类中的每一个都是单例(是的,它们保持状态),所以我觉得这样做没问题。这似乎是一件糟糕的事情吗?

感谢任何回答的人,非常感谢!

编辑:我用斜体添加了进一步的说明。谢谢。

0 投票
5 回答
1484 浏览

javascript - 在Javascript中检查对象是否为数组的最佳方法是什么?

假设我有这样的功能:

说我打电话foo(1),我怎么知道它是否返回一个数组?

0 投票
6 回答
5215 浏览

java - 检查消息类型时避免使用 instanceof

我有以下情况,其中客户端类根据它接收到的消息类型执行不同的行为。我想知道是否有更好的方法来做到这一点,因为我不喜欢 instanceof 和 if 语句。

我想做的一件事是将方法从客户端类中提取出来并将它们放入消息中。我会在 IMessage 接口中放置一个类似 process() 的方法,然后将特定于消息的行为放在每个具体的消息类型中。这将使客户端变得简单,因为它只会调用 message.process() 而不是检查类型。但是,唯一的问题是条件中包含的行为与对 Client 类中包含的数据的操作有关。因此,如果我确实在具体的消息类中实现了一个流程方法,我将不得不将它传递给客户端,我也不知道这是否真的有意义。

0 投票
5 回答
2127 浏览

oop - 在这种情况下如何替换 instanceof ?

我正在尝试比较 compareCriteria。简单的,例如“between”和“inArray”或“greaterThan”。我对这些类使用多态性。他们从 compareCriteria 接口共享的一种方法是“matchCompareCriteria”。

我试图避免的是让每个类检查它们应该匹配的 compareCriteria 的类型。例如,inArray 对象将检查 matchCompareCriteria 是否传递了一个 inArray 对象,如果没有,它将返回 false,如果它知道如何比较。

也许 instanceof 在这种情况下是完全合法的(对象知道自己),但我仍在寻找可能的方法来避免它。有任何想法吗?

伪代码示例:

如果 X 和 Y 大于 Z,它将返回 true。

编辑:

1) instanceof 是我目前在 matchCompareCriteria 方法中看到的。我想摆脱它

2) matchCompareCritera 检查一个 compareCriteria 是否被另一个包含。如果一个的所有可能值都包含在另一个中,则返回 true。对于 compareCriteria 的许多组合,比较它们甚至没有意义,因此它们返回 false(例如 betweenAlfa 和 betweenNum 将不兼容)。

0 投票
4 回答
19863 浏览

object - OCaml:类型检查对象

如果我有一个对象,我如何确定它的类型?(是否有与 Javainstanceof运算符等效的 OCaml?)

0 投票
3 回答
2530 浏览

javascript - Implementing isInstance in Javascript

I define how two functions can inherit from each other as follows:

}

I then need to define an isInstance function that would behave like Java's instanceOf or PHP's instanceof. In essence, isInstance could be used to determine whether a variable is an instantiated object of a function that inherits from a parent function.

This is what I wrote:

}

Which works fine when comparing two functions, but not when comparing instantiated variables.

The last case above is what I want to get working. How can I add isInstance to instances, not just functions? And to all javascript gurus out there, are there any improvements to my code (the inherit method, maybe)?

Thanks.