如何正确找出 javascript 中的类型?

How to properly find out type in javascript?

在此代码示例中:

level.js:

class Level {
  setLevel(level) {
    // if (typeof level === "number") {
    if (level.constructor === Number) {
      this._level = level;
    }
  }

  getLevel() {
    return this._level;
  }
}

module.exports = Level;

index.js:

const Level = require("./level");

let l = new Level();
l.setLevel(3);
console.log(l.getLevel());

我有 2 个获取输入变量类型的选项 leveltypeof[var].constructor。由于 JS 是原型语言,对我来说使用带有构造函数的语言似乎更直接。因为每个变量都有一个 a 它决定了它的真实类型。那为什么大家都用typeof然后比较它的字符串结果呢? (因此仅限于原始类型,而构造函数可以使用 custom/class 变量)

  1. .constructor 是可变的
    参见:

  2. instanceof 还检查“继承的”构造函数
    参见:Difference between instanceof and constructor property