JS 对象基本用法

65 阅读1分钟

对象是无序的数据集合也是键值对的集合

声明对象的两种语法

  1. let obj={'name':'frank','age':18}
  2. let obj=new Object({ 'name':'frank' })
  • 注意:
    • 键名是字符串,不是标识符,可以包含任意字符
    • 引号可省略,省略之后就只能写标识符,就算引号省略,键名也还是字符串
    • 没有数字键名、没有数字下标。。虽然看着像数字,但是都是字符串,可以用Object.keys(a)查看key的类型

如何删除对象的属性

语法:delete obj.xxx或delete obj['xxx'],即可删除obj的xxx属性

注意:delete删除属性跟值(不含属性名),而undefined只删除值(属性值为undefined)

区分:不含属性名和含属性名但属性值为undefined

不含属性名:'xxx' in obj ===false;

含属性名,但是值为undefined:'xxx' in obj && obj.xxx===undefined

如何查看对象的属性

  • 查看自身所有属性:Object.keys(obj)
  • 查看自身+共有属性:console.dir(obj)
  • 查看对象的一个属性:两种方法:
    • 中括号语法:obj['key'] //注意加引号才是个key,不加就是个变量不确定的值
    • 点语法:obj.key

如何修改或增加对象的属性

直接赋值

  • let obj ={name:'frank'}
  • obj.name='frank'
  • obj['name']='frank'
  • obj['na'+'me']='frank'
  • let key='name';obj[key]='frank'

批量赋值

  • Object.assign(obj,{age:18,gender:'man'})

'name' in obj和obj.hasOwnProperty('name') 的区别

'name' in obj :如果这个name包含在obj中,不管是自有的还是共有的,只要包含其中,就返回true

obj.hasOwnProperty('name'):如果是自己的属性会返回true,共有的或者不存在的会返回false,

所有用它俩可以判断一个属性是自有的还是共有的