JS 对象基本用法

  • 定义

    • 无需的数据集合
    • 键值对的集合
  • 如何声明

    • 字面量 let i = {}
    • 使用 Object 构造函数 let i = new Object()
  • 值得注意的细节

    • 键名是字符串,不是标志符,可以包含任意字符
    • 引号可以省略,省略之后只可以写标志符
    • 即便是省略之后键名也还是字符串
    • 除了字符串之外,symbol 也能做属性名,一般用在迭代上,目前比较少见
  • 变量的值做属性名

    • 使用[变量]就会使用使用变量的值作为键值,如果变量值是除 symbol 意外的其他类型,则会自动变成字符串
  • 删属性

    • delete obj.xxx 或 delete obj[‘xxx’] 注意与 obj.xxx = undefined 的区别,后者只是将值设置为 undefined,而键名还在
  • 读属性

    • 查看自身所有属性:Object.keys(obj)
    • 查看自身所有值:Object.values(obj)
    • 查看自生加共有属性:
      • console.dir(obj)
      • 或者使用自己用 Object.keys()打印 proto
    • 判断一个属性是自有的还是共有的
      • obj.hasOwnProperty(‘tostring’),注意与’name’ in obj 的区别,后者判断对象中是否由属性时,若自身没有,在原型中找到也是返回 true,而前者只有自身有才返回 true
  • 查属性

    • 两种方法
      • 中括号语法:obj[‘key’]
      • 点语法:obj.key
  • 修改或者增加属性

    • 直接赋值
    • 批量赋值
      • object.assign(),例如 Object.assign(obj, {age: 18, gender: ‘man’})
    • 修改原型对象
      • Object.prototype.toString = ‘xxx’ ,一般来说,不要修改原型,会引起很多问题
    • 替换原型对象
      • 推荐使用 Object.create 不推荐直接修改 proto,例如let obj = Object.create(common)

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!