首页 > 其他分享 >自定义toString()方法检测对象类型时的返回值[object x](JS)

自定义toString()方法检测对象类型时的返回值[object x](JS)

时间:2022-09-28 16:45:35浏览次数:51  
标签:Object 自定义 object JS toString MyTestClz prototype

如果想通过 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

相关文章

  • Vue3.0 如何写自定义指令
    背景问:什么是指令?答:指令就是DOM与逻辑行为的媒介,本质就是DOM绑定的独立逻辑行为函数。除了核心功能默认内置的指令(例如v-model和v-show),Vue也允许注册自定义指令。Vu......
  • MYSQL中的json数据操作
    1.2基础查询操作用法提示:如果json字符串不是数组,则直接使用$.字段名如果json字符串是数组[Array],则直接使用$[对应元素的索引id]1.2.1一般json查询使用 json字段......
  • vite.config.js配置入门详解
    一,搭建vite项目兼容性注意:Vite需要 Node.js 版本14.18+,16+。然而,有些模板需要依赖更高的Node版本才能正常运行,当你的包管理器发出警告时,请注意升级你的Node版......
  • echarts文字颜色自定义修改
    1、改变坐标轴文字颜色:在xAxis,yAxis中添加以下代码即可 axisLabel:{      show:true,      textStyle:{         color......
  • docker配置阿里云加速器(修改daemon.json后缀为conf)
    问题:docker无法拉取镜像,根据网上教程添加 /etc/docker/daemon.json后仍然失败。解决方法:将daemon.json文件名改为daemon.conf 后成功解决问题。网上常见配置方......
  • asdf 安装 python 与 nodejs
    asdf安装python与nodejs系统centos7.9安装asdf官方地址:asdf-vm/asdf:ExtendableversionmanagerwithsupportforRuby,Node.js,Elixir,Erlang&more(gi......
  • 基于EtherCAT运动控制卡的自定义运动曲线设置说明
    今天,正运动小助手给大家分享一下EtherCAT运动控制卡的自定义运动曲线,主要介绍一下如何通过在线命令封装自己想使用的Basic指令到上位机接口中供上位机调用。一、ECI2828......
  • [RxJS] Subscription add()
    Youcanuse subsciprtion.add(anotherSubscription)tocombinesubscriptionsandcancelthematthesametime.import{Observable}from'rxjs';constobserver......
  • js异步编程的三种模式
    写在前面javascript语言的执行环境是"单线程"(singlethread),就是指一次只能完成一件任务。如果有多个任务,就必须排队,等前面一个任务完成,再执行后面一个任务,以此类推。......
  • 用 nodejs 搭建脚手架
    1前言1.1像我们熟悉的vue-cli,taro-cli等脚手架,只需要输入简单的命令taroinitproject,即可快速帮我们生成一个初始项目。在日常开发中,有一个脚手架工具可以用来提高工......