【发布时间】: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