1. 对象是什么
对象 (object):JavaScript里的一种数据类型。
可以理解为是一种无序的数据集合,注意数组是有序的数据集合。
用来描述某个事物,例如描述一个人。
> 人有姓名、年龄、性别等信息、还有吃饭睡觉打代码等功能。
> 如果用多个变量保存则比较散,用对象比较统一。
比如描述班主任信息。
> 静态特征(姓名,年龄,身高,性别,爱好)=> 可以使用数字,字符串,数组布尔类型等表示。
> 动态行为(点名,唱,跳,rap)=> 使用函数表示。
let obj = { name: '坤坤', age: 18, sex: '男' }
2. 对象使用
1.对象声明语法
let 对象名 = {} let 对象名 = new object()
例如:
// 声明了一个person的对象 let person = {}
实际开发中,我们多用花括号。 {} 是对象字面量
2.对象有属性和方法组成
属性:信息或叫特征(名词)。 比如 手机尺寸、颜色、重量等...
方法:功能或叫行为(动词)。 比如 手机打电话、发短信、玩游戏...
你还能举例吗?
let 对象名 = { 属性名: 属性值, 方法名: 函数 }
3.属性
数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是名词性的。
let obj = { name: '坤坤', age: 18, sex: '男' }
属性都是成对出现的,包括属性名和值,它们之间使用英文 : 分隔
多个属性之间使用英文 , 分隔
属性就是依附在对象上的变量(外面是变量,对象内是属性)
属性名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等
对象的操作
对象本质是无序的数据集合,操作数据无非就是 增 删 改 查 语法
属性-查
声明对象,并添加了若干属性后,可以使用 . 获得对象中属性对应的值,我称之为属性访问。
语法:对象名.属性
简单理解就是获得对象里面的属性值
let obj = { name: '坤坤', age: 18, sex: '男' } console.log(obj.name) console.log(obj.age) console.log(obj.sex)
属性-查的另外一种写法
对于多词属性或则 - 等属性,点操作就不能用了。
我们可以采取: 对象['属性'] 方式,单引号和双引号都阔以
let person = { 'user-name': '坤坤', age: 18, gender: '女' } console.log(person['user-name']) // 坤坤
属性-改
语法:对象名.属性 = 新值
let obj = { name: '坤坤', age: 18, sex: '男' } obj.sex = '女' console.log(obj.sex) // 女
属性-增
语法:对象名.新属性 = 新值
let obj = { name: '坤坤', age: 18, sex: '男' } obj.hobby = '唱跳rap篮球' console.log(obj) // {name: '坤坤', age: 18, sex: '男', hobby: '唱跳rap篮球'}
属性-删 (了解)
语法:delete 对象名.属性
let obj = { name: '坤坤', age: 18, sex: '男' } delete obj.age console.log(obj) // {name: '坤坤', sex: '男'}
5.对象中的方法
数据行为性的信息称为方法,如跑步、唱歌等,一般是动词性的,其本质是函数
let person = { name: 'andy', sayHi: function() { document.write('hi~~') } }
1.方法是由方法名和函数两部分构成,它们之间使用 : 分隔
2.多个属性之间使用英文 , 分隔
3.方法是依附在对象中的函数
4.方法名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等
声明对象,并添加了若干方法后,可以使用,调用对象中函数,我称之为方法调用。
也可以添加形参和实参
let person = { name: 'andy', add: function(x, y) { document.write(x + y) } } person.add(1, 2)
3. 遍历对象
遍历对象
for 遍历对象的问题:
对象没有像数组一样的length届性,所以无法确定长度
对象里面是无序的键值对,没有规律,不像数组里面有规律的下标
let obj = { uname : 'andy', age: 18, sex: '男' } for (let k in obj) { console.log(k) // 印属性名 console.log(obj[k]) // 打印属性值 }
一般不用这种方式遍历数组、主要是用来遍历对象
for in语法中的 k 是一个变量在循环的过程中依次代表对象的属性名
由于 k 是变量,所以必须使用[]语法解析
一定记住: k 是获得对象的属性名,对象名[k] 是获得 属性值