自定义toString()方法检测对象类型时的返回值[object x](JS)
如果想通过 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]'
分类:
JavaScript
标签:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?