SOURCE

// 对象:JS里的一种数据类型(可以理解为是一种无序的的数据集合,注意数组是有序的数据集合)
// 对象是用来描述某个事物,例如描述一个人
// 例: let obj = {                  
//     uname : '94',          (属性名和值都是成对出现的,他们之间用:分隔,多个属性之间用,分隔 属性和值用;隔开)
//     age : '18',            (属性名可以使用'' 或者 "")
//     gender : '男'
// }
// 声明语法:
// let 对象名 ={}   或者   let 对象名= new Object()

// 对象由属性和方法组成
// 属性:信息或叫特征(名词)比如 手机尺寸,颜色,重量等
// 方法:功能或叫行为(动词)比如 手机打电话,发短信,玩游戏
// let 对象名 ={
//     属性名:属性值,
//     方法名:函数
// }
// 属性:数据描述性的信息成为属性,如人的姓名,身高,年龄,性别等,一般是名词性的
// 练习:请声明一个产品对象,里面包含如下信息:
// let goods = {
//     uname: '小米(MI)',
//     num: '100012816024',
//     weight: '0.55kg',
//     address: '中国大陆'
// }
// console.log(goods)
// console.log(typeof goods)
// console.log(goods.address)  //查询对象:获得对象里面的属性值
// console.log(goods.address = 'xxxx') //改变值:在属性外面注意是=号!!改值和增加值都是同一个语法,如果属性内没有则增加,有相同的则改值)
// console.log(delete goods.address)    //删除值:仅作了解
// console.log(goods)
// 查询属性的另一种写法
// 对于多词属性或则 - 等属性,点操作就不能用了,需要采取['属性']方式,单双引号都行(大量使用的方法)
// let goods = {
//     'goods-name': '小米(MI)',
//     num: '100012816024',
//     weight: '0.55kg',
//     address: '中国大陆'
// }
// console.log(goods['goods-name'])
// 对象中的方法:数据行为性的信息成为方法,如跑步,唱歌等,一般是动词性的,本质还是函数。
// 1.方法是由方法名和函数两部分构成,它们之间使用:分隔
// 2.多个属性之间使用,隔间
// 3.方法是依附在对象中的函数
// 4.方法名可以使用""或'',一般情况下省略,除非名称遇到特殊符号如空格,中横线等
// let person = {
//     name:'94'
//     sayHi:function(){
//         document.write('hi~~~')
// },  //多个方法用,隔开
// }
// 方法调用:对象名.方法
// 练习:给对象增加唱歌和跳舞的方法,并打印输出
// let obj = {
//     name: '94',
//     sing: function (x = 0, y = 0) {
//         document.write(x + y)
//     },
//     dance: function () {
//         document.write('不会!')
//     }
// }
// obj.sing(1, 2)
// obj.dance()
// 遍历对象:对象里面是无序的键值对,没有规律,不像数组里面有规律的下标
// 语法:
// let obj = {
//     uname: '94',
//     age: 18,
//     address: '你猜'
// }
// for (let k in obj) {            (k是键值key的缩写)
//     console.log(k)              (属性名 如'uname','age' 请注意!!k代表的是'uname'而不是uname,获取的是属性名!!)
//     console.log(obj[k])         (如果输出obj.k 相当于输出了obj.'uname' 报错,obj[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 k in students) {
//     console.log(k)           //k打印的是元素下标!!!!!!!!!
//     console.log(students[k])   //打印对象的属性!!!
//     console.log(students[k].name)  //打印指定的对象属性
// }
// 内置对象:JS内部提供的对象,包含各种属性和方法供调用
// Math(“数学”对象)太多了我记不住,网站上看吧
// 内置对象(属性):console.log(Math.PI)
// 内置对象(方法):console.log(Math.cell(1.1))//向上取整 为2
// 需要注意的是Math.round(-1.5) 负数四舍五入取最接近的整数为-1 这点上要和数学上负数区分开来
// Math.round(-20.51)则是离-21更近
// 生成任意范围随机数
// Math.random()随机数函数,返回一个0-1之间,并且[0,1)的值
// 生成0-10的随机数并向下取整
// Math.floor(Math.random()*(11))       
// (11相当于10+1      Math.random默认为[0,1),*10之后为[0,10),取不到11,因此+1变成[0,11)就可以取到10了   
// let obj = {
//     uname: '九祀',
//     rank: 'A',
//     level: function () {
//         document.write('机体危险程度评估:无威胁')
//     }
// }
// for (let k in obj) {
//     console.log(obj[k])
// }

// 请把['1','2','3','4','5','6','7']中随机得到的元素删除
// let arr = ['1', '2', '3', '4', '5', '6', '7']
// let random = Math.floor(Math.random() * arr.length)
// document.write(arr[random])
// arr.splice(random, 1)
// console.log(arr)
// 程序随机生成1~10之间的一个数字,用户输入一个数字
// 1.如果大于该数字,就提示,数字猜大了,继续猜
// 2.如果小于该数字,就提示,数字猜小了,继续猜
// 3.如果猜对了,就提示猜对了,程序结束
// function getRandom(N = 0, M = 0) {
//     return Math.floor(Math.random() * (M - N + 1)) + N
// }
// let random = getRandom(1, 10)
// console.log(random)
// let flag = true
// while (true) {
//     let num = +prompt('请输入你竞猜的数字(1~10之间):')
//     if (num > random) {
//         alert('竞猜失败,您的数字大了')
//     } else if (num < random) {
//         alert('竞猜失败,您的数字小了')
//     } else (num === random) {
//         alert('竞猜成功')
//         break
//     }
// }
// 如果有明确的次数,用for循环
// 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
//     }
// }
// if (flag) {
//     alert('竞猜次数已用完')
// }
// 目的: 复习对象的声明

// 要求:

// 1. 声明一个变量per, 类型为对象类型
// 2. 该对象的属性为性别,年龄,爱好(3个)
// 3. 该对象的方法有 说话, 吃饭(2个)
// 4. 在控制台分别调用该对象的属性和方法

// ### 练习题3:

// 调用对象的方法

// 目的: 复习对象的使用

// 要求:

// 1. 对象声明完毕后, 调用对象中的吃饭的方法
// 2. 提示: 对象中的方法本质是函数, 调用需要加()
// 3. 方法也可以传递参数的
// let per = {
//     gender: '男',
//     age: '18',
//     habbit: '唱,跳,rap',
//     eat: function () {
//         document.write('炒粉放鸡精')
//     },
//     speak: function () {
//         document.write('基尼太美')
//     }
// }
// per.eat()
// console.log(per.habbit)
// 猜数字游戏,设定次数,最多猜8次
// function getRandom(N = 0, M = 0) {
//     return Math.floor(Math.random() * (M - N + 1)) + N
// }
// let random = getRandom(+prompt('请输入一个数'), +prompt('请输入一个数'))
// let flag = true
// for (let i = 1; i <= 8; i++) {
//     let num = +prompt('输入一个数以竞猜')
//     if (num < random) {
//         alert('您竞猜的数字偏小')
//     } else if (num > random) {
//         alert('您竞猜的数字偏大')
//     } else {
//         alert('竞猜成功')
//     }
// }
// if (flag) {
//     alert('很遗憾,竞猜次数已耗尽')
// }

console 命令行工具 X clear

                    
>
console