1.对象(object):(用来描述一个人或者一件事情)
js里的一种数据类型(引用类型),也是用于存储数据的
(1)和数组的区别:
<1>数组不知道每个元素的代指含义,而对象可以用键值对的形式存储语义更加明了
<2>对象是无序的数据集合,而数组是有顺序的
(2)对象的组成:
<1>对象由属性和方法组成:
<2>属性:
1.定义对象属性
2.访问对象属性(与数组不同,对象是没有索引下标的)
<script>
//定义对象属性
let obj = {
uname: "tony",
age: 18,
gender: "male"
}
//访问对象的属性,以(对象.属性名)的形式访问,得到属性值
console.log(obj.uname)
</script>
<3>方法
1.定义对象方法
2.调用对象方法
<script>
//1.定义对象方法
let obj = {
uname: 'zhangsan',
//方法名和匿名函数之间用冒号分隔
//属性与方法用逗号分隔
sing: function () {
console.log('hhahahalalla')
},
danc: function () {
console.log('waawa')
}
}
//调用方法
obj.sing()
obj.danc()
</script>
//用传参的方式使用方法
<script>
//1.定义对象方法
let obj = {
uname: 'zhangsan',
//方法名和匿名函数之间用冒号分隔
//属性与方法用逗号分隔
sing: function () {
console.log('太阳当空照')
},
danc: function () {
console.log('探戈')
},
run: function (str) {
console.log(str + '100米')
}
}
obj.sing()
obj.danc()
obj.run("我在跑")
</script>
输出:
2.操作对象
(1)增 :对象.新属性=新值
(2)删 : delete 对象.属性
(3)改 :对象.属性=新值
(4)查 :对象.属性
对象查语法介绍:!注意!中括号中书写的是字符串或者变量名
//对象查语法介绍
<script>
let obj = {
'pig-name': '小花',//1.
gender: 'male',//2.
age: 12//3.
}
console.log(obj['pig-name'])
//1.因为中横线在js中是关键字(减号),所以要加引号,否则会默认为pig减name变量
let str = 'gender'
console.log(obj[str])//2.输出male
console.log(obj['age'])//3.若为obj[age],则会将age作为变量名,找不到,输出undefined
//所以要加引号 最后输出为12
</script>
查操作总结:多词属性(1.)或者需要解析变量(2.)(3.)的时候用[]语法,其余的直接用“.”语法
查操作注意事项:
1.点后面的属性一定不要加引号
2.[]里面的属性一定要加引号,否则会被解析成变量
增删改查综合案例:
//增删改查综合案例
<script>
let obj = {
uname: "tony",
age: 18,
gender: "male",
sing: function () {
console.log("荷塘月色")
}
}
//1.查
console.log(obj.age)//输出18
//2.改 (对象.属性=新值或者对象.方法=新值)
obj.age = 19
console.log(obj.age)//输出19
//3.增 ==>对象.新属性=值
console.log(obj)
obj.tel = "136315066994"
console.log(obj)
//4.删 ==>delete对象.属性
delete obj.age
console.log(obj)
</script>
结果:
3.遍历对象
(1)遍历数组用for循环,但对象属性没有下标索引,没有长度length,而且是无序的,所以对象属性不能用for循环遍历
(2)用'for in'遍历对象
语法如下图:
练习1:遍历输出:
<script>
let obj = {
uname: "tony",
age: 35,
gender: "male"
}
//1.for in遍历对象
for (let key in obj) {
console.log(key + ':' + obj[key]);
console.log(typeof key)//输出三次string 说明输出的都是字符串
}
</script>
控制台输出为:
练习2:遍历获取对象的属性名和属性值:
<script>
let obj = {
uname: "tony",
age: 35,
gender: "male"
}
//1.for in遍历对象
for (let key in obj) {
console.log(obj[key]);//获取对象的属性值
console.log(key);//获取对象的属性名
}
</script>
4.内置对象
(1)内置对象:JavaScript内部提供的对象,包含各种属性和方法给开发者调用
之前用的document.write(),console.wirte()都是内置对象 例如下图:
(2)查询内置对象网址:Math - JavaScript | MDN
(3)利用max,min方法求最大值和最小值:(常用)
<script>
let resultMax = Math.max(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);//输出10
let resultMin = Math.min(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);//输出1
console.log(resultMax);
console.log(resultMin);
</script>
(4)利用ceil,floor向上取整和向下取整 (常用)
注意: 向上取整和向下取整可以放在坐标轴上判断 如: 若要求对-1.2向下取整 则输出-2;对-1.2向上取整 则输出-1。
<script>
let Ceil = Math.ceil(1.2);//输出2
let Floor = Math.floor(1.2);//输出1
console.log(Ceil);
console.log(Floor);
</script>
(5)利用round四舍五入(眼熟)
注意:向正无穷方向取值
<script>
console.log(Math.round(2.4));//输出2
console.log(Math.round(2.5));//输出3
console.log(Math.round(-2.4));//输出-2
console.log(Math.round(-2.6));//输出-3
</script>
(6)利用内置对象Math生成任意范围随机数
求区间公式(不包括max数值,只包含min值 若要包括 则需要+1):Math.random()*(max-min)+min
//1.获取0到10之间的整数
<script>
//乘以十是为了获取个位数存在的数字 即:若生成0.65 则0.65*10=6.5 再使用Math.floor()取整为6
console.log(Math.floor(Math.random()*10+1))
//因为为向下取整 所以若想获取0到10的数 则需要+1
</script>