JavaScript基础知识笔记 第五天
对象
一、什么是对象
对象(object):JavaScript里的一种数据类型。
区别于数组,数组是有序的数据集合,而对象是一种无序的数据集合,可以用于详细的描述某个事物。
二、对象使用
1.语法:
let 对象名={} //{}为对象字面量
eg:
let person={}
2.对象有属性和方法
属性:信息/特征(名词)
eg:
let 对象名={
方法名:函数
}
方法:功能/行为(动词)
eg:
let 对象名={
属性名:属性值
}
let obj={
uname:'pink',
age:18
}
属性名与属性值中间需用:,多个属性使用,分割,属性名可使用“ ”或‘’,一般可省略,除非名称使用空格之类的特殊符号。
案例
请声明一个产品对象,里面包如下信息:
要求:
商品对象名字: goods
商品名称命名为: name
商品编号: num
商品毛重: weight
商品产地: address
let mi={
goods:'小米',
name:'小米10',
num:'100012816024',
weight:'0.55kg',
address:'中国大陆'
}
3.操作(增删改查)
(1)查
语法:
对象名.属性
eg:
let person={
uname:'pink'
}
console.log(person.uname)
对于属性名为‘user-name’时,以上语法无法使用
语法:
对象['属性']
eg:
let person={
'user-name':'pink'
}
console.log(person['user-name'])
(2)改
语法:
对象名.属性=新值
eg:
let person={
uname:'pink'
}
person.uname='red'
console.log(person.uname)
(3)增
语法:
对象名.新属性=新值
eg:
let person={
uname:'pink'
}
person.age=18
(4)删(了解)——一般不会对对象进行外部删除操作
语法:
delete 对象名.属性
eg:
let person={
uname:'pink'
}
delete person.uname
案例
请对产品对象,做如下操作:
要求:
- 请将商品名称里面的值修改为: 小米10 PLUS
- 新增一个属性颜色 color 为 ‘粉色’
- 请依次页面打印输出所有的属性值
let mi={
goods:'小米',
name:'小米10',
num:'100012816024',
weight:'0.55kg',
address:'中国大陆'
}
//1
mi.name='小米10 PLUS'
//2
mi.color='粉色'
4.对象中的方法
eg:
let person={
sayhi:function(){
document.write('hi~')
}
}
//方法调用
person.sayhi()
可以在方法函数中添加形参和实参
三、遍历对象
eg:
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] 是获得 属性值
案例
需求:请把下面数据中的对象打印出来:
// 定义一个存储了若干学生信息的数组
let students = [
{name: '小明', age: 18, gender: '男', hometown: '河北省'},
{name: '小红', age: 19, gender: '女', hometown: '河南省'},
{name: '小刚', age: 17, gender: '男', hometown: '山西省'},
{name: '小丽', age: 18, gender: '女', hometown: '山东省'}
]
for(let i=0;i<students.length;i++){
for(let k in students[i]){
document.write(students[k])
}
}
四、内置对象
1.内置对象是什么
JavaScript内部提供的对象,包含各种属性和方法给开发者调用
eg:document.write()、console.log()
2.内置对象Math
Math对象包含的方法有:
random:生成0-1之间的随机数(包含0不包括1)
ceil:向上取整
floor:向下取整
max:找最大数
min:找最小数
pow:幂运算
abs:绝对值
3.内置对象——生成任意范围随机数
Math.random()——随机函数,返回一个0-1之间,包括0但不包括1的随机小数
0-10:
Math.floor(Math.random()*(10+1))
5-10:
Math.floor(Math.random()*(5+1))+5
N-M:
Math.floor(Math.random()*(M-N+1))+N
案例
需求:请把 [‘赵云’, ‘黄忠’, ‘关羽’, ‘张飞’, ‘马超’, ‘刘备’, ‘曹操’] 随机显示一个名字到页面中,但是不允许重复显示
①:利用随机函数随机生成一个数字作为索引号
②:数组[随机数] 生成到页面中
③:数组中删除刚才抽中的索引号
let arr=['赵云', '黄忠', '关羽', '张飞', '马超', '刘备', '曹操']
let num=Math.floor(Math.random()*arr.length)
document.write(arr[num])
arr.splice(num,1)
案例
需求:程序随机生成 1~10 之间的一个数字,用户输入一个数字
①:利用随机数生成一个数字
②:需要一直猜,所以需要不断的循环
③:因为条件是结果猜对了,就是判断条件退出,用while循环合适
④:内部判断可以用多分支语句
let num=Math.floor(Math.random()*10)+1
while(1){
let unum=+prompt('请输入数字:')
if(unum>num){
alert('数字猜大了,继续猜!')
}else if(unum<num){
alert('数字猜小了,继续猜!')
}else if(unum===num){
alert('猜对了')
break
}
}