对象?

161 阅读2分钟
  引用数据类型 操作的是引用地址
  对象 Array 数组[] 普通对象object {} RegExp Date Math ...
  Function 函数数据类型

  id: 1 
  属性名(key键):属性值(value)  
  key:value 键值对
   对象里存储就是 这种键值对形式的
   浏览器会分配一块空间内存 让我们来存储对象里面数据内容 
   obj 存储的引用地址(这个对象内存的引用地址)
   定义对象时 浏览器会默认将属性名转化为字符串形式(隐式转换)
   var obj = {
     id: 1, // 'id': 1
     name: 'zhufeng', // 'name': 'zhufeng'
     title: '2019',
     c: 123
   }
   console.log(typeof obj) // 'object'

   console.log(obj)
   通过某个对象 找到里面某一个属性名对应的属性值
   获取值 
   对象名.属性名 obj对象的id这个属性
   console.log(obj.id)
   console.log(obj.name)
   对象名['属性名']
   console.log(obj[id])
   console.log(obj['id'])

   获取属性值的两种方式
   console.log(obj.title)
   console.log(obj['title'])

  
   当obj.c 是把c当做属性名来看待
   如果找不到属性名 默认返回的就是undefined
  var obj = {
    id: 1, // 'id': 1
    name: 'zhufeng', // 'name': 'zhufeng'
    title: '2019',
    c: 123
  }
  console.log(obj.c)
  console.log('数组', [c]) // ['title']
  console.log(c)
  var c = 'title'
  obj[c] => obj['title'] => obj.title
  obj[c]把变量c所存储的值 当做属性名来解析
  console.log(obj[c]) // '2019''c'当做普通属性名来解析
  console.log(obj['c']) // 123
  console.log(obj.c) // 123

  获取属性值需要注意的
  var obj2 = {
    n: 10,
    'c': 'ccc',
    1: 100, // 可以把数字当做属性名来使用
    'con-title': 101,
    o: {id: 123},
    arr: [1, 2, 3]
  }

  如果是数字作为属性名 下面两种写法都行
  console.log('一', obj2[1]) // 100
  console.log('二', obj2['1']) // 100

  对于数字作为属性名的时候
  不能用这种打点方式(对象名.属性名)
  console.log('三', obj2.1) // 错误写法
  console.log(obj2.n) // 10

  console.log(obj2.con-title)
  console.log(obj2['con-title']) // 101
  console.log(obj2.o) // {id: 123}

  document.write(obj2['con-title']) // write(101)

   获取属性值
   一 对象名.属性名
   二 对象名['属性名']

   对象里 属性名不能有重复的
   如果有重复的 定义顺序 后面会把前面的覆盖掉(后来者居上)
  var obj3 = {
     name: '12期',
     name: '15期',
     name: 100
  }
  console.log(obj3.name) // 100

   var n
   console.log(n) // undefined

   console.log(aa)

   var obj2 = {n: 123}

   对象 增删改查
   查找
   var message = { id: 100 }
   console.log(message.id)
   console.log(message['id'])

   增加属性 
   根据这个对象存储的引用地址 找到这个对象内存 增加一个叫做title的属性 属性值为’2019‘
   message.title = '2019'
   console.log(message)
   message['text'] = 1000
   console.log(message)

   var message = { id: 100 }
   修改 修改的是原有的值
   console.log(message.id) // 100

   var n = 123

   修改操作
   message.id = 'new'
   message['id'] = 2018
   console.log(message)
   console.log(message.id)
   增加一个name属性
   message.name = 'zhufeng'

   删除 
   将message对象中id这个属性删除
   delete message.id
   delete message['id']
   console.log(message)

   假删除 只是属性值清空 这个属性还是存在的
   message.id = null // 空值
   console.log(message)

   var delete = 1223