周亚博的个人博客

  • 首页
  • 盛夏光年
  • 陪风去荡
  • 布响丸啦
我频繁记录着 因为生活值得
  1. 首页
  2. 文章
  3. 正文

js对象转基本类型

2022-10-13 50点热度 0人点赞 0条评论

1、如果倾向于转换为 Number 类型的,就优先调用 valueOf
2、如果倾向于转换为 String 类型,就只调用 toString

var obj = {
  toString () {
    console.log('toString')
    return 'string'
  },
  valueOf () {
    console.log('valueOf')
    return 'value'
  }
}

alert(obj) // string
console.log(1 + obj) // 1value

3、如果重写了其中一个方法,而没有重写另一个方法,则会调用 重写的方法

var obj = {
  toString () {
    return 'string'
  }
}

console.log(1 + obj) // 1string

4、调用上述两个方法的时候,需要 return 原始类型的值,都没有则报错

var obj = {
  toString() {
    return {}
  },
  valueOf() {
    return {}
  }
}

console.log(1 + obj)
// Cannot convert object to primitive value

5、如果有 Symbol.toPrimitive 属性的话,会优先调用,它的优先级最高,且也只能返回原始类型

var obj = {
  toString () {
    console.log('toString')
    return {}
  },
  valueOf () {
    console.log('valueOf')
    return {}
  },
  [Symbol.toPrimitive] () {
    console.log('primitive')
    return 'primi'
  }
}

console.log(1 + obj) // 1primi
标签: 类型转换
最后更新:2022-10-13

粥呀Bo

所谓惊喜,就是苦苦等候的兔子来了,后面却跟着狼

点赞
< 上一篇

文章评论

取消回复

COPYRIGHT © 2022 zhouyaker.cn. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

陕ICP备2022009272号