01-对象的声明
对象也是一种数据类型,我们可以认为对象也是一个Object类型的变量
// let 变量名 = {}
// let student = new Object()
let student = {} // 语法糖
console.log(student)
- 属性名称
(键-key):属性值(值-value), - 属性名称:属性值:
key是字符串,可以省略引号 - 值:如果是字符串就需要添加引号,其它不用
// 特征==属性: 姓名 年龄 性别 学科
// 行为==方法==功能: 写代码 调bug
let student = {
gender: '男',
subject: '前端',
name: '李东',
age: 18,
// 方法的添加
// 方法名称:匿名函数
corder: function() {
console.log('我会写代码')
},
debug: function() {
console.log('我会调bug')
}
}
console.log(student)
// age: 18
// corder: ƒ ()
// debug: ƒ ()
// gender: "男"
// name: "李东"
// subject: "前端"
02-对象的属性值的获取.点语法
-
- 对象.属性名称 : 属性名称是一个字符串值,不用
加引号,如果属性名称存在,就返回对应的值,如果不存在就返回undefined
- 对象.属性名称 : 属性名称是一个字符串值,不用
- 2.
对象['属性名称']:功能和对象.属性一样 - 3.对象[变量]:变量不能加引号,否则就成为字符串,有一个前提:变量必须先定义好
let student = {
// 属性名称(键-key):属性值(值-value),
// 属性名称:属性值
gender: '男',
subject: '前端',
name: '李东',
age: 18,
// 方法的添加
// 方法名称:匿名函数
corder: function() {
console.log('我会写代码')
},
debug: function() {
console.log('我会调bug')
}
}
// 获取对象的属性值的语法是点语法:对象.属性名称
console.log('学员的姓名是:', student.name) // 学员的姓名是: 李东
console.log('学员的学科是:', student.subject) // 学员的学科是 前端
// 调用对象的方法 的语法是点语法:对象.方法属性名称()
student.corder() //我会写代码
student.debug() //我会调bug
03-对象的属性值的获取-[ ]方式
let student = {
// 属性名称(键-key):属性值(值-value),
// 属性名称:属性值
name: '李东',
age: 18,
// 方法的添加
corder: function() {
console.log('我会写代码')
}
}
// 获取对象的属性值的语法:[]语法:对象['属性名称'] === 对象.属性名称
// console.log('学员的姓名是:', student['name'])
// // student['corder']:获取到一个方法
student['corder']() // === student.corder()
let propName = prompt('请输入你想获取的属性名称')
04-对象的属性值的获取-[ ]第二种方式
let student = {
// 属性名称(键-key):属性值(值-value),
// 属性名称:属性值
name: '李东',
age: 18,
// 方法的添加
corder: function() {
console.log('我会写代码')
}
}
// 获取对象的属性值的语法:[]语法:对象['属性名称'] === 对象.属性名称
// console.log('学员的姓名是:', student['name'])
// // student['corder']:获取到一个方法
// student['corder']()
let propName = prompt('请输入你想获取的属性名称')
// console.log(propName)
// 点语法和['属性名称']都是获取对象的指定名称的属性值
// 获取一个对象不存在的属性值,返回undefined(返回一个数组不存在的索引位置返回undefined)
console.log('你想要的属性值是:', student.propName)
console.log('你想要的属性值是:', student['propName'])
// 对象[属性名称变量] 》》 先解析变量,根据变量的值获取属性值
// 如果属性名称是一个变量,那么[变量]是唯一的机会
console.log('你想要的属性值是:', student[propName])
05-对象的行为--方法
// let say = function (){}
let student = {
name: 'jack', // 对象的属性 = 值
// 方法:自我介绍
say: function() {
console.log(456)
} // 对象的方法属性 = 值-函数
}
student.say() //456
// console.log(window)
student['say']() //456
06-对象操作--修改和新增
let student = {
name: 'jack',
say: function() {
console.log(456)
}
}
console.log(student)
// 1。如果对象的属性值存在,重新赋值就是修改
student.name = 'rose'
console.log(student)
// 2.如果属性值不存在,就是新增属性且赋值
student.age = 20
console.log(student)
student['gender'] = '男'
console.log(student)
let prop = 'name'
student[prop] = '广州黑马程序员'
console.log(student)
student.code = function() {
console.log('我写代码')
}
console.log(student)
07-对象操作-属性删除
<script>
let student = {
name: 'jack',
say: function() {
console.log(456)
}
}
console.log(student)
// 删除对象的成员: delete 对象.属性
// 如果成员不存在,则也不报错
delete student.say
delete student.name
delete student.age
console.log(student) //
</script>
08-对象的使用-案例
// 获取一串字符串中每个字符出现的次数:{a:2,b:4,c:6,d:1}
let str = 'aasdfasdfasfasdfasdfasdfdfhjgh'
// 结果
let obj = {}
// 遍历字符串-字符串的本质是字符数组
for (let i = 0; i < str.length; i++) {
// console.log(str[i]) // a >> {a:2}
let key = str[i]
// 如果对象中有当前遍历到的字符所对应的成员,则 将值 + 1
// 获取一个对象不存在的属性值,返回undefined
//obj[key] !=undefined
if (obj[key]) {
obj[key] += 1
}
// 如果对象没有当前遍历到的字符所对应的成员,那么 添加一个新的成员,且值为1
else{
obj[key] = 1
}
}
console.log(obj)
09-对象的遍历
let student = {
gender: '男',
subject: '前端',
name: '李东',
age: 18,
debug: function() {
console.log('我会调bug')
}
}
// 遍历对象使用for ... in:因为对象没有索引,所以不能使用for索引的方式进行遍历
// for(let key in 对象){}
for (let key in student) {
console.log(key, student[key])
}
10-Math对象的基本使用
// ceil:向上取整:获取比这个数大的 所有整数 中的最小值
// 经典应用场景:获取总页数
// 11条 》 每页10条 》 几页? Math.ceil(11 / 10)
let num = 1.1
console.log(Math.ceil(num));
// floor:向下取整: 获取双这个数 小的 所有整数中的 最大值
let num = 1.9
console.log(Math.floor(num))
// max:求一组数据 中的最大值
console.log(Math.max(1, 234, 325, 4, 645, 6747, 568)) //6747
// ...:展开运算符,可以将数组的所有成员一个一个展开
console.log(Math.max(...[1, 234, 325, 4, 645, 6747, 568])) //6747
// min:获取一组数据中的最小值
console.log(Math.min(1, 234, 325, 4, 645, 6747, 568)) //1
// pow(数据,n次幂)
console.log(Math.pow(2, 10))
// abs:绝对值:负值成为正数
console.log(Math.abs(-100)) //100
11-random函数生成随机数
// Math.randomI()只能生成0-1之间的随机数,理论上包含0但是不包含1
// console.log(Math.random())
// 生成0-10 的随机数
// console.log(Math.floor(Math.random() * 11))
// 需要 0 - n的随机数: parseInt(Math.random() * (n+1))
// console.log(parseInt(Math.random() * 11))
let arr = ['张三', '李四', '王五', '易波']
// 生成一个 0 到 长度-1 的随机数
let index = parseInt(Math.random() * arr.length)
document.write(arr[index])
12-生成指定范围的随机数
// Math.randomI()只能生成0-1之间的随机数,理论上包含0但是不包含1
// 生成5 - 10
// 先生成0-5 + 5
let num = parseInt(Math.random() * (5 + 1)) + 5
console.log(num)
// let arr =(0,1,2,3,4,5,67,8,9,a,b,c,d,e,f)
// 生成N - M
let num = parseInt(Math.random() * (N + 1)) + (M - N)
et num = parseInt(Math.random() * (M - N + 1)) + N