在ES6中,如何检查对象的类?

Iva*_*van 40 javascript ecmascript-6

在ES6中,如果我创建一个类并创建该类的对象,我该如何检查该对象是否是该类?

我不能只使用,typeof因为对象仍然是"object".我只是比较构造函数吗?

例:

class Person {
  constructor() {}
}

var person = new Person();

if ( /* what do I put here to check if person is a Person? */ ) {
  // do stuff
}
Run Code Online (Sandbox Code Playgroud)

Eri*_*ric 57

你不能person instanceof Person吗?

单独比较构造函数不适用于子类

  • @someUser:`new B() instanceof A` 是javascript中最合理的继承定义。如果你发现你得到了`B` 和`C`,那么你的问题是你实际上已经让`B` 在你不打算继承的时候从`C` 继承。你如何实现你的继承? (2认同)

gal*_*ant 6

谨慎的只是一个字,使用的instanceof似乎容易出现故障的内置JS类(如文字String,Number等等).在这些情况下,使用可能更安全typeof如下:

typeof("foo") === "string";

有关详细信息,请参阅此主题.