JS对象及补充 | 前端笔记(十)

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.堆:程序员分配释放,若不释放,由垃圾回收机制回收,存放引用数据类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值