JavaScript-DAY5学习笔记

1.对象

1.1 什么是对象

对象(subject):JavaScript里的一种数据类型,可以理解是一种无序的数据结合

特点:

  • 无序的数据的集合
  • 可以详细的描述某个事物

1.2 对象使用

对象声明:

//方法1
let 对象名 = {}

//方法2
let 对象名 = new Object()

对象由属性和方法组成:

  • 属性:信息或叫特征(名词)
  • 方法:功能或叫行为(动词)
    let 对象名 = {
         属性名:属性值,
         方法名:函数
    }

注:

属性:数据描述性的信息称为属性

  • 属性都是成对出现的,包括属性名和值,他们之间使用英文:分隔开
  • 多个属性之间使用英文,分隔
  •  属性就是依附在对象那个上的变量(外面是变量,对象内是属性)
  • 属性名可以使用""或'',一般情况下省略

操作对象:

查询对象对象.属性
重新赋值对象.属性 = 值
对象添加新的数据对象名.新属性名 = 新值
删除对象中的属性

delete 对象名.属性名

补:查的另外一种规范:对象名['属性名']

对象中的方法

例如:

let person={
name:'Andy'
sayHi:function(){
     doucument.write('hi~~~')
   }
}

 方法调用 对象名.方法名

注:

  • 方法是由方法名和函数两部分构成,他们之间使用:分隔
  • 多个方法之间使用英文,分隔
  • 方法是依附在对象中的函数
  • 方法名可以使用""或'',一般情况下省略,除非名称遇到特殊符号如括号、中横线等 

遍历对象

  <script>
    let shark = {
      nickname: '小豆包',
      birth: 11.4,
      rank: 'NO.1'
    }
    for (let k in shark) {
      console.log(k)
      console.log(shark[k]);
    }
  </script>

注:

  • 一般不使用这种方式遍历数组,主要用来遍历对象
  • for in语法中的k是一个变量,在循环过程中依次代表对象的属性名
  • 由于k是变量,所以必须使用[]语法解析
  • 一定记住:k是获取对象的属性名,对象名[k]是获取属性值

案例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        table {
            width: 600px;
            text-align: center;
        }

        table,
        th,
        td {
            border: 1px solid #ccc;
            border-collapse: collapse;
        }

        caption {
            font-size: 18px;
            margin-bottom: 10px;
            font-weight: 700;
        }

        tr {
            height: 40px;
            cursor: pointer;
        }

        table tr:nth-child(1) {
            background-color: #ddd;
        }

        table tr:not(:first-child):hover {
            background-color: #eee;
        }
    </style>
</head>

<body>
    <h2>学生信息</h2>
    <table>
        <caption>学生列表</caption>
        <tr>
            <th>序号</th>
            <th>姓名</th>
            <th>生日</th>
            <th>性别</th>
            <th>昵称</th>
        </tr>
        <script>
            // 1.数据准备
            let athletes = [
                { name: '孙颖莎', birth: '2000.11.4 ', gender: '女', nickname: '莎莎' },
                { name: '王曼昱', birth: '1999.02.09', gender: '女', nickname: '鳗鱼' },
                { name: '陈梦', birth: '1994.01.15', gender: '女', nickname: '大梦' },
                { name: '王艺迪', birth: '1997.02.14', gender: '女', nickname: '大迪' }
            ]
            for (let i = 0; i <= athletes.length; i++) {
                document.write(`
            <tr>
            <td>${i + 1}</td>
            <td>${athletes[i].name}</td>
            <td>${athletes[i].birth}</td>
            <td>${athletes[i].gender}</td>
            <td>${athletes[i].nickname}</td>
            </tr>
            `)
            }
        </script>
    </table>
</body>

</html>

1.3 内置对象

内置对象:JavaScript内部提供的对象,包含各种属性和方法给开发者调用

内置对象Math():提供一系列做数学运算的方法

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

案例--取N到M之间的数

function getRandom(N,M){
return Math.floor(Math.random()*(M-N+1))+N
}

案例--随机点名

  <script>
    let nameList = ['赵云', '黄忠', '关羽', '张飞', '马超', '刘备', '曹操']
    let random = Math.floor(Math.random() * nameList.length)
    document.write(nameList[random])
  </script>

案例--随机点名不允许重复

<script>
    let nameList = ['赵云', '黄忠', '关羽', '张飞', '马超', '刘备', '曹操']
    let random = Math.floor(Math.random() * nameList.length)
    document.write(nameList[random])
    nameList.splice(random, 1)
  </script>

案例--猜数字游戏

  <script>
    function getRandom(N, M) {
      return Math.floor(Math.random() * (M - N + 1) + N)
    }
    let flag = true
    let random = getRandom(1, 10)
    for (let i = 0; i < 3; i++) {
      let num = +prompt('请输入一个1到10之间的数')
      if (num > random) {
        alert('猜大了')
      } else if (num < random) {
        alert('猜小了')
      } else {
        alert('猜对了')
        flag = false
        break
      }
    }
    if (flag) {
      alert('次数用完')
    }
  </script>

案例--随机颜色

 <script>
    // 该函数接收一个布尔类型参数,表示颜色的格式是十六进制还是rgb格式
    // 如果参数传递的是true或者无参数,则输出一个随机十六进制的颜色;
    // 如果参数传递的是false,则输出一个随机rgb颜色
    function getRandomColor(flag = true) {
      if (flag) {
        let str = '#'
        let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
          'a', 'b', 'c', 'd', 'e', 'f']
        for (let i = 0; i < 6; i++) {
          let random = Math.floor(Math.random() * arr.length)
          str += arr[random]
        }
        return str
      } else {
        let r = Math.floor(Math.random() * 256)
        let g = Math.floor(Math.random() * 256)
        let b = Math.floor(Math.random() * 256)
        return `rgb(${r},${g},${g})`
      }
    }
    console.log(getRandomColor(true));
  </script>

2.综合案例

根据数据渲染列表页面

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>学成在线首页</title>
    <link rel="stylesheet" href="./css/style.css">
    <style>

    </style>
</head>

<body>

    <!-- 4. box核心内容区域开始 -->
    <div class="box w">
        <div class="box-hd">
            <h3>精品推荐</h3>
            <a href="#">查看全部</a>
        </div>
        <div class="box-bd">
            <ul class="clearfix">
                <script>
                    let data = [
                        {
                            src: 'images/course01.png',
                            title: 'Think PHP 5.0 博客系统实战项目演练',
                            num: 1125
                        },
                        {
                            src: 'images/course02.png',
                            title: 'Android 网络动态图片加载实战',
                            num: 357
                        },
                        {
                            src: 'images/course03.png',
                            title: 'Angular2 大前端商城实战项目演练',
                            num: 22250
                        },
                        {
                            src: 'images/course04.png',
                            title: 'Android APP 实战项目演练',
                            num: 389
                        },
                        {
                            src: 'images/course05.png',
                            title: 'UGUI 源码深度分析案例',
                            num: 124
                        },
                        {
                            src: 'images/course06.png',
                            title: 'Kami2首页界面切换效果实战演练',
                            num: 432
                        },
                        {
                            src: 'images/course07.png',
                            title: 'UNITY 从入门到精通实战案例',
                            num: 888
                        },
                        {
                            src: 'images/course08.png',
                            title: 'Cocos 深度学习你不会错过的实战',
                            num: 590
                        },
                    ]

                    for (let i = 0; i < data.length; i++) {
                        document.write(`
                        <li li >
                            <a href="#">
                            <img src=${data[i].src} alt="">
                                <h4>
                                    ${data[i].title}
                                </h4>
                                <div class="info">
                                    <span>高级</span> • <span>${data[i].num}</span>人在学习
                                </div>
                             </a>
                        </li>`)

                    }

                </script>
            </ul>
        </div>
    </div>

</body>

</html>

效果图: 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值