ES6数组判断以及原始值转换

一. 数组判断

  1. 情况一
const target = {}

function isArray(target) {
    return Object.prototype.toString.call(target) === "[object Array]"
}
console.log(isArray(target)) // false
const target = {
    [Symbol.toStringTag]: "Array",
}

function isArray(target) {
    return Object.prototype.toString.call(target) === "[object Array]"
}
console.log(isArray(target)) // true

  1. 情况二
const target = {}

function isArray(target) {
    return target instanceof Array
}

console.log(isArray(target)) // false
const target = {}
Object.setPrototypeOf(target, Array.prototype)
function isArray(target) {
    return target instanceof Array
}

console.log(isArray(target)) // true

使用ES6

const target = {
    [Symbol.toStringTag]: "Array",
}

Object.setPrototypeOf(target, Array.prototype)

function isArray(target) {
    return Array.isArray(target)
}

console.log(isArray(target)) // false

二. 原始值转换

  1. 情况一
const target = {}
console.log(target.toString()) // [object Object]
console.log(target + 1) // [object Object]1
  1. 情况二
const target = {
    toString() { return 1 },
}
console.log(target.toString()) // 1
console.log(target + 1) // 2
  1. 情况三
const target = {
    toString() { return 1 },
    valueOf() {
        return 2
    },
}
console.log(target.toString()) // 1
console.log(target + 1) // 3
  1. 情况四 参考mdn
const target = {
    toString() { return 1 },
    valueOf() {
        return 2
    },
    [Symbol.toPrimitive](hint) {
        return 3
    },
}
console.log(target.toString()) // 1
console.log(target + 1) // 4

原始值强制转换优先权重:[Symbol.toPrimitive] > valueOf > toString

相关推荐

  1. ES6数组判断以及原始转换

    2024-03-19 14:10:05       21 阅读
  2. es6类,判断数据类型

    2024-03-19 14:10:05       20 阅读
  3. ES6原始数据类型Symbol

    2024-03-19 14:10:05       31 阅读
  4. ES6参数默认

    2024-03-19 14:10:05       12 阅读
  5. ES6---判断对象是否为{}

    2024-03-19 14:10:05       29 阅读
  6. es6之 Symbol 独一无二的

    2024-03-19 14:10:05       14 阅读
  7. el-table原始列表转换成树形数据

    2024-03-19 14:10:05       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-19 14:10:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-19 14:10:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-19 14:10:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-19 14:10:05       20 阅读

热门阅读

  1. redis cpu百分百问题

    2024-03-19 14:10:05       21 阅读
  2. flinksql在实时数仓hologres的计算问题排查

    2024-03-19 14:10:05       24 阅读
  3. CSS进阶

    CSS进阶

    2024-03-19 14:10:05      15 阅读
  4. 智能汽车系统安全

    2024-03-19 14:10:05       17 阅读
  5. python+feon有限元分析|Feon框架

    2024-03-19 14:10:05       17 阅读
  6. python脚本

    2024-03-19 14:10:05       20 阅读