对象的声明:

  1. let obj = { 'name':'yingyingguai','age':'23'}
  2. let obj = new Object({'age':'23'})
  3. consloe.log({'age':'23'})

注:键名是字符串,可以包含任意字符。
引号可以省略,省略之后可以写标识符和数字 (省略后的标识符和数字 也是 字符串)

增、删、改、查

增改

obj.name == obj[‘name’]
obj.name != obj[name]

  1. let obj = { 'name':'yingyingguai','age':'23'}
  2. // 直接赋值
  3. obj.name = 'hello'
  4. obj['name'] = 'hello'
  5. //批量赋值
  6. Object.assign(obj,{(x:'a',y:'b',z:'c'})

  1. let obj = { 'name':'yingyingguai','age':23,'width' : 100}
  2. obj.name = undefined //修改元素值
  3. delete obj.name //删除元素

  1. let obj = { 'name':'yingyingguai','age':23,'width' : 100}
  2. Object.keys(obj) //
  3. Object.values(obj) // 查看自身属性
  4. Object.entries(obj) //
  5. console.dir(obj) // 查看自身属性和隐藏属性
  6. 'name' in obj //查看元素在不在对象里面,无法看出是自身属性还是公有属性
  7. obj.hasOwnProperty("name") //查看属性是自身属性还是公有属性
  8. //查看属性
  9. obj['name'] || obj.name

原型:每个对象都有原型,原型里存着对象的公有属性。
对象的对象也有原型,这个原型包含所有对象的公有属性,是对象的根,这个原型是null

对象的分类
prototype 属性:

  1. 所有函数一出生就有一个 prototype 属性
  2. 所有 prototype 一出生就有一个 constructor 属性
  3. 所有 constructor 属性一出生就保存了对应的函数的地址
  4. 如果一个函数不是构造函数,它依然拥有 prototype 属性,只不过这个属性暂时没什么用
  5. 如果一个对象不是函数,那么这个对象一般来说没有 prototype 属性,但这个对象一般一定会有 proto 属性

New操作
当使用new X()构造函数的时候,new X()自动做了四件事情:
1、自动创建了空对象X
2、自动为空对象创建了关联原型,原型地址指定为X.portotype(负责保存对象的公有属性)
3、自动将空对象作为this关键字运行所构造函数
4、自动return this

new X() 构造函数时候,首字母大写;所有被构造出来的函数对象,首字母小写

类型 和 类
类型是JS数据的分类,有七种(四基两空一对象)
类是对象的分类,有无数种。常见的如:Array Function Data 等。