JavaScript 常见问题

Primitive vs Object#

  • Primitive
    • primitive value, primitive data type
    • 不是对象,没有方法,不可变
    • 7 种类型 - string, number, bigint, boolean, undefined, symbol, null
    • 除了 null 和 undefined 都有封装类型 - String, Number, BigInt, Boolean, Symbol
  • Object
    • 非 Primitive
    • 集成自 Object.prototype
    • Object.create(null)
    • JS 中 数组为对象
  • typeof
    • 会返回 function, undefined, object, string, number, boolean, bigint, symbol
    • typeof null 会返回 object
// 最简单直接判断
typeof obj === 'object' && obj !== null
// 判断是否为对象 - 非 Prim
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object
function isObject(obj) {
return obj === Object(obj);
}
// 在 Object.prototype, Object.create(null) 返回 false
val instanceof Object
// null 返回 true
typeof val === 'object'