对象
对象是什么
⚫ 对象(object):JavaScript里的一种数据类型
⚫ 可以理解为是一种无序的数据集合
⚫ 用来描述某个事物,例如描述一个人
➢ 对象是一种数据类型
➢ 无序的数据的集合
➢ 人有姓名、年龄、性别等信息、还有吃饭睡觉打代码等功能
➢ 如果用多个变量保存则比较散,用对象比较统一
⚫ 比如描述 班主任 信息:
➢
静态特征 (姓名, 年龄, 身高, 性别, 爱好) => 可以使用数字, 字符串, 数组, 布尔类型等表示
➢
动态行为 (点名, 唱, 跳, rap) => 使用函数表示
对象有什么特点?
➢ 无序的数据的集合
➢ 可以详细的描述描述某个事物
对象使用
let 对象名 = {}
let person= {}
对象有属性和方法组成
➢ 属性:信息或叫特征(名词)。 比如 手机尺寸、颜色、重量等…
➢ 方法:功能或叫行为(动词)。 比如 手机打电话、发短信、玩游戏…
let 对象名 = {
属性名:属性值,
方法名:函数
}
let person = {
uname:'andy',
age:18,
sex:'男'
}
掌握对象语法,用它保存多个数据
属性
数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是名词性的。
➢ 属性都是成 对出现的,包括属性名和值,它们之间使用英文 : 分隔
➢ 多个属性之间使用英文 , 分隔
➢ 属性就是依附在对象上的变量(外面是变量,对象内是属性)
➢ 属性名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等
对象属性没有顺序
属性和值用什么 : 隔开 ,多个属性用 , 隔开
掌握对象语法,用它保存多个数据
属性访问
声明对象,并添加了若干属性后,可以使用 . 或 [] 获得对象中属性对应的值,我称之为属性访问。
简单理解就是获得对象里面的属性值
let person = {
uname:'andy',
age:18,
sex:'男'
}
console.log(person.name)
console.log(person.age)
//或者
let person = {
uname:'andy',
age:18,
sex:'男'
}
console.log(person['name'])
console.log(person['age'])
对象中的方法:
数据行为性的信息称为方法,如跑步、唱歌等,一般是动词性的,其本质是函数。
- 方法是由方法名和函数两部分构成,它们之间使用 : 分隔
- 多个属性之间使用英文 , 分隔
- 方法是依附在对象中的函数
- 方法名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等
let person={
name:'andy',
sayHi:function(){
document.write('hi~~')
}
}
对象中的方法访问
声明对象,并添加了若干方法后,可以使用 . 调用对象中函数,我称之为方法调用
注意: 千万别忘了给方法名后面加小括号
let person={
name:'andy',
sayHi:function(){
document.write('hi~~')
}
}
person.sayHi()
操作对象
对象本质是无序的数据集合, 操作数据无非就是 增 删 改 查 语法:
查询对象
对象.属性 或者 对象['属性']
对象.方法()
对象添加新的数据
也可以动态为对象添加属性,动态添加与直接定义是一样的,只是语法上更灵活。
对象名.新属性名=新值
重新赋值
对象.属性=值
对象.方法=function()
删除对象中的属性
delete 对象名.属性名
遍历对象
能够遍历输出对象里面的元素
对象没有像数组一样的length属性,所以无法确定长度
对象里面是无序的键值对, 没有规律. 不像数组里面有规律的下标
let obj ={
uname:'andy',
age:18,
sex:'男'
}
for(let k in obj){
console.log(k) //打印属性名
console.log(obj[k]) //打印属性值
}
⚫ 一般不用这种方式遍历数组、主要是用来遍历对象
⚫ 一定记住: k 是获得对象的属性名, 对象名[k] 是获得 属性值
内置对象
内置对象是什么
javaScript内部提供的对象,包含各种属性的方法给开发者调用
内置对象Math
Math对象是javascript提供的一个数学高手对象
提供了一系列做数学运算的方法
方法有:
➢ random : 生成0-1之间的随机数(包含0不包括1)
Math.floor(Math.random() * (10 + 1))
//生成0-10的随机数
Math.floor(Math.random() * (5 + 1)) + 5
//生成5-10的随机数
5Math.floor(Math.random() * (M - N + 1)) + N
//生成n-m的随机数
➢ ceil : 向上取整
Math.ceil()
➢ floor : 向下取整
Math.floor()
➢ max : 找最大数
Math.max(1,2,3,4,5)
➢ min : 找最小数
Math.min(1,2,3,4,5)
➢ pow : 幂运算
Math.pow(n/m) //n的m次方
➢ abs : 绝对值
Math.abs()
总结:
属性小结
\1. 对象属性有顺序吗?
➢ 没有
\2. 属性和值用什么符号隔开?多个属性用什么隔开?
➢ 属性和值用 : 隔开
➢ 多个属性用,逗号隔开
属性访问小结
- 对象访问属性有哪两种方式?
➢ 点形式 对象.属性
➢ [] 形式 对象[‘属性’]
- 两种方式有什么区别?
➢ 点后面的属性名一定不要加引号
➢ [] 里面的属性名一定加引号
➢ 后期不同使用场景会用到不同的写法
方法访问小结
- 对象访问方法是如何实现的?
➢ 对象.方法()
➢ person.sayHi()
- 对象方法可以传递参数吗?
➢ 可以,跟函数使用方法基本一致
遍历对象小结
- 遍历对象用那个语句?
➢for in
- 遍历对象中, for k in obj,获得对象属性是那个,获得值是那个?
➢ 获得对象属性是 k
➢ 获得对象值是 obj[k]
上午复习回顾
1.访问对象的属性有几种方式?说说
- 对象.属性
- 对象['属性']
- 对象[变量]——有一个前提,变量必须先定义
2.JavaScript 的基本类型有哪些?引用类型有哪些
- 基本类型:string、number、bool、null、undefined
- 引用类型:object、function、array
3.JavaScript 中什么情况下会返回 undefined 值,请说出几种场景...
- 函数定义了形参,没有传实参,显示undefined
- 对象属性名不存在时,显示undefined
- 函数写了return,但没有赋值,拿到的是undefined
- 一个函数没有返回值,默认获取到的返回值是undefined
- 定义了一个变量没有赋值,默认值也是undefined
补充
- toLowerCase():把字符串转为小写,返回新的字符串
- toUpperCase():把字符串转为大写,返回新的字符串
js中没有不区分大小写的api, 我们只能将字符串转换为小写 或者大写再匹配
-
substring():提取字符串中介于两个指定下标之间的字符,包含起始下标位置的字符,但是不起作用
let sum = '我真的好菜啊' console.log(sum.substring(3, 6)); -
indexOf(): 返回某个指定的字符串在字符串中第一个出现的索引位置,如果没有查找到则返回-1
如果找到就返回索引位置,如果没有找到就返回-1
后期主要应用场景:模糊查询--搜索
let end=email.indeOf('@') @字符串的第一次出现的索引位置
let sum = '我真的好菜啊' let arr = sum.split('好') console.log(arr); -
substr(): 返回从指定下标开始指定长度的子字符串
substr(1)除了第一个默认到最后 到length
let sum = '我真的好菜啊' console.log(sum.substr(0, 4)); -
split():把字符串按指定的字符分割成字符串数组
let sum = '我真的好菜啊' let arr = sum.split('好') console.log(arr);