引用数据类型 操作的是引用地址
对象 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