如果想通过 Object.prototype.toString() 方法来检测对象类型,则需要以 Function.prototype.call()
或者 Function.prototype.apply()
的形式来调用 toString() 方法。
示例:
const _toString = Object.prototype.toString; _toString.call(new Date()); // output: '[object Date]' _toString.call(Math); // output: '[object Math]'
对于我们开发者自定义的类型,使用 toString() 方法检测后返回的类型字符串标识可能不是我们期待的值!
示例:
class MyTestClz {} const _toString = Object.prototype.toString; const typeString = _toString.call(new MyTestClz()); console.log(typeString); // output: '[object Object]'
如果我们想自定义使用 toString() 方法进行类型检测后的返回值,应该怎么处理呢?
(我们可以通过设置 Symbol.toStringTag 属性)
该属性的属性值应为字符串类型,用来表示该对象的自定义类型标签。
class MyTestClz { get [Symbol.toStringTag]() { return 'MyTestClz'; } } // ... // ... console.log(typeString); // output: '[object MyTestClz]'
标签:Object,自定义,object,JS,toString,MyTestClz,prototype From: https://www.cnblogs.com/fanqshun/p/16738645.html