【问题标题】:How to get Actual Class type in javascript如何在javascript中获取实际类类型
【发布时间】:2016-06-15 14:33:54
【问题描述】:

JavaScript instanceof 运算符使用原型链返回对象的类型。

假设我有以下层次结构。

Rabit->Animal->Object->Null

现在如果我想知道任何实例实际上是兔子、动物或物体,我不能这样做。

if (rabbitObj instance of Animal) // true
if (rabbitObj instance of Rabit) // true
if (rabbitObj instance of Object) // true

怎么会得到rabbitObj其实是个Rabbit。

我如何获得实例的实际类型,而不是遵循原型链。

【问题讨论】:

  • “实际上”是一只兔子?你可能真的是这个意思:stackoverflow.com/a/1249554/438992
  • 不明白,看来您回答了自己的问题-> if (rabbitObj instance of Rabit) // true。这应该可以回答您的问题。
  • 您只需要按层次结构的顺序检查它们。如果它对rabbitObj instanceof Rabit 测试为真,那么它显然是一只兔子。而另一只动物squirrelObj = new Squirrel(); 不会对此进行测试。不过,两者都将在 rabbitObj instanceof Animal 条件下测试为真。

标签: javascript prototype prototypal-inheritance


【解决方案1】:

您正在尝试将 JavaScript 的委托行为用作基于类的语言继承,但它们是不同的东西。在 JavaScript 中,您必须从对象及其原型的角度进行思考,并了解委托如何为您工作以实现您正在寻找的东西,而不是继承。

阅读You Don't Know JS: this & Object Prototypes 书籍,特别是Prototypes 章节,了解有关原型和委托系统的更多信息。

【讨论】:

  • 那本书不见了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 2015-06-04
  • 2019-11-09
相关资源
最近更新 更多