Object.prototype.toString() 可以用来检查对象类型。

```
var toString = Object.prototype.toString;
toString.call('foo'); // "[object String]"
toString.call([1, 2]); // "[object Array]"
toString.call(3); // "[object Number]"
toString.call(true); // "[object Boolean]"
toString.call(undefined); // "[object Undefined]"
toString.call(null); // "[object Null]"
```

从 ES2015 开始,可以使用内置的 Symbol.toStringTag,自定义对象返回的类型值。

```
let Obj = {
get [Symbol.toStringTag]() { return 'Wow' }
}
Object.prototype.toString.call(obj) // "[object Wow]"
```

你可能不知道的是,有些内置对象已经在使用 Symbol.toStringTag 定义自己的类型了。

```
Object.prototype.toString.call(new Map()); // "[object Map]"
Object.prototype.toString.call(function* () {}); // "[object GeneratorFunction]"
Object.prototype.toString.call(Promise.resolve()); // "[object Promise]"
```

参考链接:developer.mozilla.org
展开
zhangbao90s于2019-12-10 01:10发布的图片
评论