概念

  • 对象(object):JavaScript里的一种数据类型 。
  • 可以理解为是一种无序的数据集合 。
  • 对象由属性和方法组成 。
  • 对象是“键值对”的集合,表示属性和值的映射关系。

属性:信息或叫特征(名词)。 比如 手机尺寸、颜色、重量等 。

方法:功能或叫行为(动词)。 比如 手机打电话、发短信、玩游戏等。

创建对象

  1. 多个属性名和属性值用逗号隔开。
  2. 方法冒号后面跟的是匿名函数。
  1. let 对象名 = {
  2. 属性名: 属性值,
  3. 方法名: 函数
  4. }

访问属性

可以使用 . 或 [] 获得对象中属性对应的值。 获得对象里面的属性值。

  • 点形式 对象.属性
  • [] 形式 对象[‘属性’]
  1. 两种方式有什么区别?
  1. - 点后面的属性名一定不要加引号
  2. - [] 里面的属性名一定加引号
  3. - 后期不同使用场景会用到不同的写法
  1. let person = {
  2. userName: '乐乐',
  3. gender: '女',
  4. cook() {
  5. console.log('做饭');
  6. }
  7. }
  8. // 访问某个属性
  9. console.log(person.userName);
  10. console.log(person.gender);
  11. console.log(person["gender"]);
  12. person.cook();
  13. document.write(`${person.gender}`)
  14. console.log(person);
  15. console.log(typeof person); //object

对象方法

  1. 方法是由方法名和函数两部分构成,它们之间使用 : 分隔
  2. 方法名可以使用 “” 或 ‘’,一般情况下省略,除非名称遇到特殊符号如空格、中横线等

对象使用

  1. 对象.方法()
  2. 千万别忘了给方法名后面加小括号
  3. 对象方法可以传递参数 , 跟函数使用方法基本一致
  1. let person = {
  2. userName: '乐乐',
  3. gender: '女',
  4. cook() {
  5. console.log('做饭');
  6. }
  7. }
  8. person.cook();

操作对象

对象名.新属性名 = 新值

delete 对象名.属性名

对象.属性 = 值 对象.方法 = function() {}

对象.属性 或者 对象[‘属性’] 对象.方法()

遍历对象

  • 对象没有像数组一样的length属性,所以无法确定长度
  • 对象里面是无序的键值对, 没有规律. 不像数组里面有规律的下标
    1. let obj = {
    2. uname: 'andy',
    3. age: 18,
    4. sex: '男'
    5. }
    6. for (let k in obj) {
    7. console.log(k) //打印属性名
    8. console.log(obj[k]) //打印属性值
    9. }

    k 是获得对象的属性名, 对象名[k] 是获得 属性值

内置对象

内置对象Math

  • random:生成0-1之间的随机数(包含0不包括1)
  • ceil:向上取整
  • floor:向下取整
  • max:找最大数
  • min:找最小数
  • pow:幂运算
  • abs:绝对值

生成任意范围随机数

  1. 生成0-10的随机数
  2. Math.floor(Math.random() * (10 + 1))
  1. 生成5-10的随机数
  2. Math.floor(Math.random() * (5 + 1)) + 5
  1. 生成N-M之间的随机数
  2. Math.floor(Math.random() * (M - N + 1)) + N

自动生成表格

  1. <style>
  2. table {
  3. width: 800px;
  4. border-collapse: collapse;
  5. text-align: center;
  6. }
  7. </style>
  8. </head>
  9. <body>
  10. <script>
  11. let students = [{
  12. name: '小明',
  13. age: 18,
  14. gender: '男',
  15. hometown: '河北省'
  16. }, {
  17. name: '小红',
  18. age: 19,
  19. gender: '女',
  20. hometown: '河南省'
  21. }, {
  22. name: '小刚',
  23. age: 17,
  24. gender: '男',
  25. hometown: '山西省'
  26. }, {
  27. name: '小丽',
  28. age: 18,
  29. gender: '女',
  30. hometown: '山东省'
  31. }]
  32. // 不需要遍历就的 拼接
  33. let tbHtml = `<table border="1">
  34. <tr>
  35. <th>序号</th>
  36. <th>姓名</th>
  37. <th>年龄</th>
  38. <th>性别</th>
  39. <th>家乡</th>
  40. </tr>`
  41. for (let i = 0; i < students.length; i++) {
  42. tbHtml += `<tr><td>${i}</td>`
  43. for (let k in students[i]) {
  44. let person = students[i];
  45. tbHtml += `<td>${person[k]}</td>`
  46. }
  47. tbHtml += `</tr>`
  48. }
  49. tbHtml += `</table>`;
  50. document.write(tbHtml)
  51. </script>

随机点名

  1. <style>
  2. * {
  3. margin: 0;
  4. padding: 0;
  5. box-sizing: border-box;
  6. }
  7. </style>
  8. </head>
  9. <body>
  10. <script>
  11. // 数组
  12. let arr = [
  13. '赵云',
  14. '黄忠',
  15. '关羽',
  16. '张飞',
  17. '马超',
  18. '刘备',
  19. '曹操',
  20. '刘婵',
  21. ];
  22. // 名字随机输出
  23. // arr[0]
  24. // arr[1]
  25. // arr[2]
  26. // arr[3]
  27. // arr[4]
  28. // arr[5]
  29. // arr[6] undefined
  30. // 数组长度有关系
  31. // 要计算 0 - 6 随机数
  32. // let index = Math.round(Math.random() * 6);
  33. // console.log(arr[index]);
  34. // function getRandom(min, max) {
  35. // // 区间的 规律
  36. // return Math.round(Math.random() * (max - min) + min);
  37. // }
  38. let index = getRandom(0, arr.length - 1);
  39. console.log(arr[index]);
  40. </script>
  1. //点名不重复
  2. <script>
  3. // 数组
  4. let arr = [
  5. '赵云',
  6. '黄忠',
  7. '关羽',
  8. '张飞',
  9. '马超',
  10. '刘备',
  11. '曹操',
  12. '刘婵',
  13. ];
  14. function getRandom(min, max) {
  15. // 区间的 规律
  16. return Math.round(Math.random() * (max - min) + min);
  17. }
  18. // 获取一次 随机数
  19. // let index = getRandom(0, arr.length - 1);
  20. // console.log(arr[index]);
  21. // // 删除数组中的某一个元素
  22. // arr.splice(index,1);
  23. // let index2=getRandom(0, arr.length - 1);
  24. // console.log(arr[index2]);
  25. // arr.splice(index2,1);
  26. // console.log(arr);
  27. // 死循环 只要你数组长度>0 我就执行重复的代码
  28. while (arr.length > 0) {
  29. let index = getRandom(0, arr.length - 1);
  30. console.log(arr[index]);
  31. arr.splice(index, 1); // 根据元素的下标来删除对应的那个数据 数组中少了一个已经显示过的数据 再次随机输出肯定不会重复
  32. }
  33. </script>

日期对象

  • 时间对象:用来表示时间的对象
  • 作用:可以得到当前系统时间

实例化时间对象

  • 在代码中发现了 new 关键字时,一般将这个操作称为实例化
  • 创建一个时间对象并获取时间

获得当前时间
  1. let date = new Date()

获得指定时间
  1. let date = new Date('1949-10-1')

时间对象方法

  • 因为时间对象返回的数据我们不能直接使用,所以需要转换为实际开发中常用的格式 | 方法 | 作用 | 说明 | | —- | —- | —- | | getFullYear() | 获得年份 | 获取四位年份 | | getMonth() | 获得月份 | 取值为 0 ~ 11 | | getDate() | 获取月份中的每一天 | 不同月份取值也不相同 | | getDay() | 获取星期 | 取值为 0 ~ 6 | | getHours() | 获取小时 | 取值为 0 ~ 23 | | getMinutes() | 获取分钟 | 取值为 0 ~ 59 | | getSeconds() | 获取秒 | 取值为 0 ~ 59 |

时间戳

  • 指1970年01月01日00时00分00秒起至现在的毫秒数,它是一种特殊的计量时间的方式

获取的三种方式
  1. console.log(date.getTime()); //第一种
  2. let getDate = +new Date //第二种
  3. console.log(Date.now()); //第三种

综合案例

  1. function getTime() {
  2. let date1 = new Date();
  3. let year = date1.getFullYear();
  4. let month = date1.getMonth() + 1;
  5. let date = date1.getDate();
  6. let hour = date1.getHours();
  7. hour = hour < 10 ? '0' + hour : hour; //小于10 补零
  8. let minute = date1.getMinutes();
  9. minute = minute < 10 ? '0' + minute : minute;
  10. let second = date1.getSeconds();
  11. second = second < 10 ? '0' + second : second;
  12. let arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
  13. let day = date1.getDay();
  14. console.log(`${year}年${month}月${date}日${hour}:${minute}:${second}`);
  15. };
  16. // 延时器有延迟,所以先调用一次
  17. getTime();
  18. setInterval("getTime()", 1000);