9.对象
(1)声明
语法:let 对象名 = { }或者let 对象名 = new Object( )
语法:
let 对象名={
属性名:属性值,
方法名:函数
}
let pink = {
uname: 'pink老师',
age: 18,
gender: '女',
song:function(){
console.log('爱你')
}
}
(2)对象操作
1.查
语法:对象名.属性
pink.gender
查的另外一种属性:对象名['属性名']
//若属性名有-,则需要加引号。
'goods-name': '小米10青春版',
console.log(obj['goods-name'])
2.改
语法:对象名.属性=新值
pink.gender='男'
3.增
语法:对象名.新属性=新值
pink.hobby = '足球'
4.删
语法:delete 对象名.属性
delete pink.age
(3)对象方法
语法:
方法名:函数
方法调用:对象名.方法名( )
let obj = {
uname: '刘德华',
song: function (x, y) {
console.log(x + y)
}
}
obj.song(1, 2)
备注:
1.无论是属性或是方法,同一个对象中出现名称一样的,后面的会覆盖前面的。
2.null
通常表示不存在的对象。使用 typeof
检测类型它的类型时,结果为 object
。
(4)遍历对象
语法:for(let k in 对象名){......}
输出属性值:对象名[k]
let obj = {
uname: 'pink老师',
age: 18,
gender: '男'
}
for (let k in obj) {
console.log(k) // 属性名 'uname'、'age'、'gender'(字符串)
console.log(obj[k]) // 输出属性值 obj[k]
}
遍历数组对象:
let students = [
{ name: '小明', age: 18},
{ name: '小红', age: 19},
{ name: '小刚', age: 17}
]
for (let i = 0; i < students.length; i++) {
console.log(i) // 下标索引号
console.log(students[i]) // 每个对象
console.log(students[i].name)//每个对象的名字
}
(5)内置对象
Math
是内置的对象,称为数学对象。
1.属性
Math.PI
,获取圆周率
console.log(Math.PI);
2.方法
Math.random
,生成 0 到 1 间的随机数(包含 0 不包含 1)
Math.random()
//0-10之间的整数
console.log(Math.floor(Math.random() * 11))
//随机在数组中抽一个,并且不允许重复显示
let arr = ['赵云', '黄忠', '关羽', '张飞', '马超', '刘备', '曹操']
let random = Math.floor(Math.random() * arr.length)
document.write(arr[random])
//splice(起始位置(下标), 删除几个元素)
arr.splice(random, 1)
console.log(arr)
//splice(起始位置,删除个数,添加数组元素)
// 取到 N ~ M 的随机整数
function getRandom(N, M) {
return Math.floor(Math.random() * (M - N + 1)) + N
}
console.log(getRandom(4, 8))
备注:Math.floor可以换成parseInt。
Math.ceil
,数字向上取整(舍弃小数部分,整数部分加1)
Math.ceil(1.1) //2
Math.floor
,数字向下取整(舍弃小数部分,整数部分不变)
Math.floor(4.68) //4
Math.round
,四舍五入取整
Math.round(1.49) //1
Math.round(-1.5) //-1
Math.round(-1.51) //-2
Math.max
,在一组数中找出最大的
Math.max(10, 21, 7, 24, 13)
Math.min
,在一组数中找出最小的
Math.min(24, 18, 6, 19, 21)
Math.pow
,幂方法
Math.pow(4, 2) // 求 4 的 2 次方
Math.pow(2, 3) // 求 2 的 3 次方
Math.sqrt
,平方根
Math.sqrt(16)
猜数字游戏:
function getRandom(N, M) {
return Math.floor(Math.random() * (M - N + 1)) + N
}
let random = getRandom(1, 10)
// 2. 设定三次 三次没猜对就直接退出
let flag = true // 开关变量
for (let i = 1; i <= 3; i++) {
let num = +prompt('请输入1~10之间的一个数字:')
if (num > random) {
alert('您猜大了,继续')
} else if (num < random) {
alert('您猜小了,继续')
} else {
flag = false
alert('猜对了,真厉害')
break
}
}
// 写到for的外面来
if (flag) {
alert('次数已经用完')
}
10.补充
(1)类型区别
1.简单数据类型(值类型):变量存储值本身。比如string、number、boolean、underfined、null
。
2.引用类型:变量存储地址(在栈开辟地址空间,在堆放内容),通过new创建对象。比如Object、Array、Date。
(2)堆栈空间分配区别
1.栈:操作系统自动分配释放存放函数的参数值、局部变量的值,存放简单数据类型。
2.堆:程序员分配释放,若不释放,由垃圾回收机制回收,存放引用数据类型。