千家信息网

JavaScript对象转原始值是什么

发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,这篇文章主要讲解了"JavaScript对象转原始值是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"JavaScript对象转原始值是什么"吧!O
千家信息网最后更新 2025年02月16日JavaScript对象转原始值是什么

这篇文章主要讲解了"JavaScript对象转原始值是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"JavaScript对象转原始值是什么"吧!

    Object.prototype.valueOf()

    对象的valueOf旨在返回对象的原始值,会在需要将对象转换成原始值的地方自动执行。详细点这里。

    Object.prototype.toString()

    toString()方法会返回表示该对象的字符串,会在对象预期要被转换成字符串的地方自动执行。对象默认的toString()方法会返回[object type],这个type就是对象构造函数的名称。详细点这里。

    Symbol.toPrimitive

    Symbol.toPrimitive(hint)方法作用同valueOf()一样,但是优先级要高于valueOf();而且该方法还会接受一个参数hint,这个参数用来表示期望转换的原始值的具体类型,有以下几种:

    • number:数字类型

    • string:字符串类型

    • default:默认

    let obj = {  [Symbol.toPrimitive](hint) {    switch (hint) {      case 'number':        return 123;      case 'string':        return 'str';      case 'default':        return 'default';      default:        throw new Error();     }   }};2 * obj // 2463 + obj // '3default'obj == 'default' // trueString(obj) // 'str'

    对象转换原始值

    以上三种方法都是在对象被预期转换成某种原始值时触发。

    1. 预期被转换成字符串类型

    对应的hint类型为string

    进行输出的地方,如alert()

    String(obj)

    let a = {  toString () {    return '2'  }}console.log(String(a)) // 2

    字符串连接(+)操作

    let a = {  toString () {    return '2'  }}console.log(a + 'vv')

    模板字符串

    let a = {  [Symbol.toPrimitive] (hint) {    console.log(hint) // string    return 2  }}console.log(`你是老${a}?`) // 你是老2?

    2. 预期被转换成数字类型

    对应的hint类型为numbe

    除法:

    let a = {  valueOf () {    return 2  }}console.log(2 / a, a / 2) // 1  1

    Number(obj):

    let a = {  [Symbol.toPrimitive] (hint) {    console.log(hint) // number    return 2  }}console.log(Number(a)) // 2

    正负号(注意不是加减运算):

    let a = {  [Symbol.toPrimitive] (hint) {    console.log(hint) // number    return 2  }}console.log(+a) // 2console.log(-a) // -2

    3. 预期被转换成默认类型(其他)

    对应的hint类型为default

    数字加法(即与对象相加的一方为数字类型):

    let a = {  [Symbol.toPrimitive] (hint) {    console.log(hint) // default    return 2  }}console.log(1 + a) // 3

    这一点有点意外,原以为像这种情况预期转换的类型应该是数字类型,但事实上却是default;

    布尔运算:所有对象都被转换成true;

    let a = {  [Symbol.toPrimitive] (hint) {    console.log(hint) // 没有触发    return false  }}console.log(Boolean(a), a && 123) // true 123

    布尔运算包括==

    三种方法触发的顺序

    首先判断对象是否有Symbol.toPrimitive(hint)方法,若有则执行该方法,没有则执行下面的步骤;

    如果预期被转换成字符串类型时,则优先执行toString()方法;

    如果预期被转换成默认类型或者数字类型时,则优先执行valueOf()方法:

    :若没有valueOf()方法,但是定义了toString()方法,则会执行toString()方法;

    感谢各位的阅读,以上就是"JavaScript对象转原始值是什么"的内容了,经过本文的学习后,相信大家对JavaScript对象转原始值是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

    对象 类型 方法 原始 字符 字符串 数字 地方 学习 运算 内容 参数 就是 布尔 情况 意外 一方 事实 事实上 优先级 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发的商业计划书 plsql如何从数据库导出数据 灰度环境数据库是生产库么 服务器管理级密码忘记 编程软件开发需要标准指法吗 计算机网络技术提前学习 华为数据库软件订阅费如何收费 面向对象软件开发的统一过程 郑州微盘软件开发 宛城区网络安全知识答案 计算机网络技术任职资格 服务器网页管理出错 用友u8无法初始化数据库 网络安全调查报告曲线图 广州金山云网络技术有限公司 数据库建表不要超过多少字段 互联网科技离我们 防止服务器黑客入侵 淄博安卓软件开发公司有哪些 大学法制教育基地软件开发 成都电商软件开发价格表 适配服务器 数据循环输入数据库 组态软件用户数据库连接失败 金融信息基础数据库的功能有哪些 网络安全获奖logo图片 实惠的销售管理软件开发管理 珠海斯坦德软件开发 服务器 美利坚合众国 杭州康棋网络技术
    0