6-js基础-5

news2024/12/23 13:26:54

JavaScript 基础 - 5

知道对象数据类型的特征,能够利用数组对象渲染页面

  • 对象
  • 综合案例
  • 数据类型存储

对象

对象(Object):JavaScript里的一种数据类型(引用类型),也是用于存储数据的

好处:可以用来详细的描述某个事物,是用键值对形式存储语义更明了

特点:对象数据是无序的,数组有序的

对象基本使用

对象有属性和方法组成

对象属性

数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是名词性的。

  1. 属性都是成 对出现的,包括属性名和值,它们之间使用英文 : 分隔
  2. 多个属性之间使用英文 , 分隔
  3. 属性就是依附在对象上的变量(对象外是变量,对象内是属性)

1. 定义对象属性

<script>
  // 对象也是一种数据类型,保存数据同时可以更直观的描述事物
  // 1. 定义对象属性
  let pig = {
    sex: '女',
    age: 4,
    uname: '佩奇',
    weight: 12.6
  }
</script>

2. 访问对象属性

声明对象,并添加了若干属性后,可以使用 . 获得对象中属性对应的值,我称之为属性访问

<script>
  // 对象也是一种数据类型,保存数据同时可以更直观的描述事物
  // 1. 定义对象属性
  let pig = {
    sex: '女',
    age: 4,
    uname: '佩奇',
    weight: 12.6
  }

  // 2. 访问对象属性  对象.属性
  console.log(pig.age)  // 4
  console.log(pig.weight)  // 12.6
</script>

对象方法

数据行为性的信息称为方法,如跑步、唱歌等,一般是动词性的,其本质是函数。

  1. 方法是由方法名和函数两部分构成,它们之间使用 : 分隔
  2. 多个属性之间使用英文 , 分隔
  3. 方法是依附在对象中的函数(对象外是函数,对象内是方法)

1.定义对象方法

// let fn = function() {}
// 对象方法
// 1. 定义对象方法
let pig = {
  uname: '佩奇',
  sing: function () {
    console.log('唱歌')
  },
  dance: function () {
    console.log('跳舞')
  }
}
console.log(pig)

2.调用对象方法

声明对象,并添加了若干方法后,可以使用 . 调用对象中函数,我称之为方法调用。

// let fn = function() {}
// 对象方法
// 1. 定义对象方法
let pig = {
  uname: '佩奇',
  sing: function () {
    console.log('唱歌')
  },
  dance: function () {
    console.log('跳舞')
  },
  sum: function (x, y) {  // 2
    // console.log(x + y)
    return x + y
  }
}
console.log(pig)

// 2. 调用对象方法
pig.sing() // 唱歌
pig.dance()  // 跳舞

// 3. 方法可以传递参数也可以有返回值,跟函数使用基本类似
let re = pig.sum(1, 2) // 1 实参
console.log(re)

注:无论是属性或是方法,同一个对象中出现名称一样的,后面的会覆盖前面的。

操作对象

对象本质是无序的数据集合, 操作对象数据无非就是 增 删 改 查

在这里插入图片描述

在这里插入图片描述

<script>
  // 操作对象:对数据 查、增、改、删
  let pig = {
    uname: '佩奇',
    sing: function () {
      console.log('唱歌')
    }
  }

// 1. 查: 对象.属性 对象.方法
console.log(pig.uname)  // 得到属性值
pig.sing()

// 2. 增:对象.新属性 = 新值   对象.新方法 = function(){}
pig.age = 4
pig.dance = function () {
  console.log('跳舞')
}
console.log(pig)

// 3. 改:对象.属性 = 新值  对象.方法 = 新匿名函数
pig.uname = '小猪佩奇'
pig.sing = function () {
  console.log('哼哼哼!!')
}
console.log(pig)

// 4. 删: 了解,因为我们很少对对象里面的数据做删除操作  delete
delete pig.age
delete pig.dance
console.log(pig)
</script>

查找属性的另外写法

对于多词属性比如中横线分割的属性,点操作就不能用了

我们可以采取: 对象[‘属性’] 方式, 单引号和双引号都阔以,当然也可以用于其他正常属性

<script>
  // 查询属性的另外写法  对象['属性'] 这个属性必须加引号
  let pig = {
    'pig-name': '佩奇',
    age: 4
  }
// console.log(pig.pig - name)  // NaN
console.log(pig['pig-name']) // 佩奇
console.log(pig['age']) // 4    === pig.age 
</script>

总结:多词属性或者需要解析变量的时候使用 [] 语法,其余的直接使用点语法

遍历对象

for 遍历对象的问题:

  • 对象没有长度length,而且是无序的

所以我们要利用 for in 遍历对象

语法:

for (let 变量 in 对象) {
  console.log(变量) // 属性名
  console.log(对象[变量]) // 属性值
}
  1. for in语法中的 k 是一个变量, 在循环的过程中依次代表对象的属性名
  2. 由于 k 是变量, 所以必须使用 [ ] 语法解析
  3. 一定记住: k 是获得对象的属性名, 对象名[k] 是获得 属性值
  4. 一般不用这种方式遍历数组、主要是用来遍历对象
<script>
  // 遍历对象
  let pig = {
    sex: '女',
    age: 4,
    uname: '佩奇',
    weight: 12.6,

  }

// for (let key in pig) {
//   console.log(key)  // key 是属性  
//   console.log(pig[key]) // 对象[变量] 是值
// }

for (let key in pig) {
  console.log(key)  // key 是属性   对象.属性
  // console.log(pig.key)   // pig.key  undefined  因为key是个变量不是属性
  // key  'sex'  'age'    对象[key]  对象['sex']  对象['age']
  console.log(pig[key])
}


// 注意:数组遍历用传统for, for in 主要用来遍历对象
let arr = ['red', 'green', 'pink']
for (let k in arr) {
  console.log(k)// 得到字符串类型的索引号
}
</script>

内置对象

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

回想一下我们曾经使用过的 console.logconsole其实就是 JavaScript 中内置的对象,该对象中存在一个方法叫 log,然后调用 log 这个方法,即 console.log()

除了 console 对象外,JavaScritp 还有其它的内置的对象

Math

Math 是 JavaScript 中内置的对象,称为数学对象,这个对象下即包含了属性,也包含了许多的方法。

属性/方法作用说明
PI圆周率Math.PI 属性,返回圆周率
max找最大值Math.max(8, 3, 1) 方法,返回 8
min找最小值Math.min(8, 3, 1) 方法,返回 1
abs绝对值Math.abs(-1) 方法,返回 1
ceil向上取整Math.ceil(3.1) 方法,返回 4
floor向下取整Math.floor(3.8) 方法,返回 3
round四舍五入取整Math.round(3.8) 方法,返回 4, 遇到.5则舍入到相邻的在正无穷(+∞)方向上的整数
<script>
  // 内置对象Math 
  // 1. PI 属性 圆周率
  console.log(Math.PI)

// 2. max  方法 找最大值
console.log(Math.max(8, 4, 2)) // 8

// 3. min  方法 找最小值
console.log(Math.min(8, 4, 2)) // 2

// 4. abs 方法 取绝对值 
console.log(Math.abs(-1))  // 1

// 5. ceil 方法 向上取整   ceil 天花板   往大了取
console.log(Math.ceil(1.1)) // 2
console.log(Math.ceil(1.5)) // 2
console.log(Math.ceil(1.8)) // 2
console.log(Math.ceil(-1.1)) //  -1
console.log(Math.ceil(-1.5)) //  -1
console.log(Math.ceil(-1.8)) //  -1

// 6. floor 方法 向下取整  floor 地板  往小了取
console.log(Math.floor(1.1)) // 1
console.log(Math.floor(1.5)) // 1
console.log(Math.floor(1.8)) // 1
console.log(Math.floor(-1.1)) //  -2
console.log(Math.floor(-1.5)) //  -2
console.log(Math.floor(-1.8)) //  -2

// 7. round 方法 四舍五入取整 
console.log(Math.round(1.1)) // 1
console.log(Math.round(1.5)) // 2
console.log(Math.round(1.8)) // 2
console.log(Math.round(-1.1)) // -1
console.log(Math.round(-1.8)) // -2
console.log(Math.round(-1.5)) // -1
</script>

数学对象提供了比较多的方法,这里不要求强记,通过演示数学对象的使用,加深对对象的理解。

随机数 random

lMath.random() 随机数, 返回一个0 - 1之间,并且包括0不包括1的随机小数 [0, 1)

如何生成0-10的随机整数呢?

Math.floor(Math.random() * (10 + 1))

如何生成5-15的随机整数?

Math.floor(Math.random() * (10 + 1)) + 5

如何生成N-M之间的随机整数

Math.floor(Math.random() * (M - N + 1)) + N
Math.floor(Math.random() * (差值 + 1)) + 最小值
<script>
  // 1. Math随机数  Math.random() 
  // 1.1 随机的小数 0 ~1 之间
  // 1.2 能取到0,但是取不到1 [0, 1)
  // console.log(Math.random())

  // 2. 取 0 ~ 10 之间的一个随机整数
  // Math.random() * (10 + 1)
  // (0 ~ 0.99999) * 11
  // 0 ~ 10.99999
  // Math.floor(Math.random() * (10 + 1))
  // console.log(Math.floor(Math.random() * (10 + 1)))

  // 3. 取 5 ~ 15 之间的一个随机整数
  // Math.floor(Math.random() * (10 + 1))  0 ~ 10 
  // Math.floor(Math.random() * (10 + 1)) + 5  5 ~ 15 
  // console.log(Math.floor(Math.random() * (10 + 1)) + 5)

  // 4. 取 n ~ m 之间的一个随机整数  4 ~ 12 
  // Math.floor(Math.random() * (差值 + 1)) + 最小值
  console.log(Math.floor(Math.random() * (8 + 1)) + 4)
</script>

综合案例

在这里插入图片描述

需求:根据数据渲染列表页面

分析:

①:根据对象数组的数据来渲染页面
②:核心利用循环来做字符串拼接生成多个标签,然后添加到容器中渲染页面


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

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

<body>

  <!-- 精品课程 -->
  <script>
    // 综合案例代码
    // 1. 利用对象数组的数据渲染页面
    // 综合案例代码
    let data = [
      {
        src: './uploads/quality01.png',
        title: 'JavaScript数据看板项目实战',
        num: 1125
      },
      {
        src: './uploads/quality02.png',
        title: 'Vue.js实战——面经全端项目',
        num: 2726
      },
      {
        src: './uploads/quality03.png',
        title: '玩转Vue全家桶,iHRM人力资源项目',
        num: 9456
      },
      {
        src: './uploads/quality04.png',
        title: 'Vue.js实战医疗项目——优医问诊',
        num: 7192
      },
      {
        src: './uploads/quality05.png',
        title: '小程序实战:小兔鲜电商小程序项目',
        num: 2703
      },
      {
        src: './uploads/quality06.png',
        title: '前端框架Flutter开发实战',
        num: 2841
      },
      {
        src: './uploads/quality07.png',
        title: '熟练使用React.js——极客园H5项目',
        num: 95682
      },
      {
        src: './uploads/quality08.png',
        title: '熟练使用React.js——极客园PC端项目',
        num: 904
      },
      {
        src: './uploads/quality09.png',
        title: '前端实用技术,Fetch API 实战',
        num: 1516
      },
      {
        src: './uploads/quality10.png',
        title: '前端高级Node.js零基础入门教程',
        num: 2766
      },
      {
        src: './uploads/quality10.png',
        title: '前端高级Node.js零基础入门教程',
        num: 27669
      }
    ]
    // 2. 利用循环来做字符串拼接生成多个li标签,之后把生成的li标签放入容器 ul 里面渲染即可
    let str = ''
    for (let i = 0; i < data.length; i++) {
      // console.log(data[i]) // 每个对象
      str += `
         <li>
          <a href="#">
            <div class="pic">
              <img src="${data[i].src}" alt="">
            </div>
            <h4>${data[i].title}</h4>
            <p><span>高级</span> · <i>${data[i].num}</i>人在学习</p>
          </a>
        </li>
      `
    }
    console.log(str)

    document.write(`
      <div class="course wrapper">
        <div class="hd">
          <h3>精品推荐</h3>
          <a href="#">查看全部
            <span class="iconfont icon-arrow-right-bold">
            </span>
          </a>
        </div>
        <div class="bd">
          <ul class="common">
            ${str}
          </ul>
        </div>
      </div>
    `)

  </script>
</body>

</html>

数据存储

内存中堆栈空间分配区别:

: 优点访问速度快,基本数据类型存放到栈里面

:优点存储容量大,引用数据类型存放到堆里面

在这里插入图片描述

在这里插入图片描述

变量声明

建议: const 优先,尽量使用const,原因是:

  • 很多变量声明的时候明确不会被更改了,为了安全性,那为什么不用 const 呢?
  • 实际开发中也是,比如 React、Vue,基本 const 声明

总结:

有了变量先给const,如果发现它后面是要被修改的,再改为let

专业术语

术语解释举例
关键字在JavaScript中有特殊意义的词汇let、var、function、if、else、switch、case、break
保留字在目前的JavaScript中没意义,但未来可能会具有特殊意义的词汇int、short、long、char
标识(标识符)变量名、函数名的另一种叫法
表达式可以被求值的代码,一般配合运算符出现10 + 3、age >= 18
语句一段可执行的代码if () for()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/686629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习笔记 - 了解机器学习中的小样本(Few-Shot)学习

一、背景概述 深度学习模型在图像分类、语义分割、对象检测等计算机视觉任务中的成功归功于利用了用于训练网络的大量标记数据——一种称为监督学习的方法。尽管在这个信息技术时代有大量的非结构化数据可用,但注释数据很难获得。 由于这个原因,计算机视觉机器学习项目中数据…

python spider 爬虫 之 urllib系列 urlretrieve下载照片、视频 网页

python 中 集成了 urllib urllib import urllib.request # urlopen 方法 url"url" response urllib.request.urlopen(url)print(type(response )) print(response.read()) # 解码 字节--->字符串 decode 字符串--》字节 encode print(response.read()…

腾讯课堂Python课程哪家强?

腾讯课堂Python课程哪家强&#xff1f; 文章目录 腾讯课堂Python课程哪家强&#xff1f;一、前言二、数据读取和数据预处理1、数据读取2、数据处理 三、有多少人愿意花钱学Python&#xff1f;四、多少价位的课买的人最多&#xff1f;五、哪家机构的课最多&#xff1f;销量最好&…

来评选你心中的TOP1编程语言

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

WEBGIS系统数据库设计

文章目录 系统设备模型设计1 .设备模型结构2. 设备逻辑关系模型系统属性数据库设计1 . 系统属性数据库2 . 实体继承关系1) 电气实体部分2 &#xff09;土建实体部分3 &#xff09;其他实体联系 系统采用PostgreS QL 作为属性数据库&#xff0c; PostGIS 作为空间数据库&#xf…

CENTOS上的网络安全工具(二十六)SPARK+NetSA Security Tools容器化部署(2)

〇、抓包与批量转换cap文件 1. Network Monitor 抓包 我们在CENTO OS上的网络安全工具&#xff08;十七&#xff09;搭建Cascade的Docker开发环境中捎带脚介绍了以下windows下的抓包软件。大意就是微软又一款不错的抓包分析软件&#xff0c;名曰nmcap&#xff0c;可在Download …

MySQL——备份与恢复

文章目录 MySQL 完全备份物理冷备份与恢复mysqldump 备份与恢复 MySQL 完全恢复MySQL 增量备份与恢复MySQL 增量备份MySQL 增量恢复 MySQL 完全备份 InnoDB存储引擎的数据库在磁盘上存储成三个文件&#xff1a;db.opt(表属性文件)、表名.frm(表结构文件)、表名.ibd(表数据文件…

FPGA解码 4K MIPI 视频 纯vhdl实现 CSI2 RX 采集OV13850,提供工程源码和技术支持

目录 1、前言2、Xilinx官方主推的MIPI解码方案3、本方案的性能及其优越性4、我这里已有的 MIPI 编解码方案5、vivado工程介绍6、上板调试验证7、福利&#xff1a;工程代码的获取 1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了&#xff0c;MIPI解…

本地部署开源大模型的完整教程:LangChain + Streamlit+ Llama

在过去的几个月里&#xff0c;大型语言模型(llm)获得了极大的关注&#xff0c;这些模型创造了令人兴奋的前景&#xff0c;特别是对于从事聊天机器人、个人助理和内容创作的开发人员。 大型语言模型(llm)是指能够生成与人类语言非常相似的文本并以自然方式理解提示的机器学习模型…

【FreeRTOS】Arduino开发STM32

0.开发环境(工具) Vscode 、platformio、arduino、STM32F103C8T6、USB-TTL 引脚连接&#xff1a;STM32直接设置为烧录模式即可&#xff0c;烧录完成后会自动运行程序。 1.点灯加串口输出调试 注意事项&#xff1a;每次上传程序前&#xff0c;需要按一下复位键。 #include &…

【Linux】2、文件系统、Rootfs

文章目录 一、文件系统二、Rootfs2.1 各目录约定2.1.1 /bin4.2 /boot4.3 /dev4.4 /etc4.5 /home4.6 /lib4.7 /media4.8 /mnt4.9 /opt4.10 /root4.11 /run4.12 /sbin4.13 /srv4.14 /tmp4.15 /usr4.16 /var 一、文件系统 Linux 的文件系统遵循 HFS 设计&#xff0c;有如下实现&a…

浅谈充电桩监控系统的必要性

关注acrelzxz&#xff0c;了解更多详情 摘要&#xff1a;针对当前电动汽车续航能力严重不足以及不能及时充电的问题&#xff0c;将电力电子变流技术、智能监控技术、REIP无线射频技术及CAN总线技术应用到电动汽车智能充电桩的设计与研究中。开展了无人值守的智能电动车充电桩的…

Android 使用webView打开网页可以实现自动播放音频

使用webview 自动播放音视频&#xff0c;场景如&#xff0c;流媒体自动部分&#xff0c;音视频通话等。会出现如下问题&#xff1a; 解决方案如下&#xff1a; 配置webview 如下&#xff0c;这样可以自动播放音频。 webView.getSettings().setMediaPlaybackRequiresUserGestur…

如何从视频里面提取音频,这4个方法非常好用!

今天&#xff0c;我要介绍4种提取视频中音频的方法&#xff0c;每一种都非常简单方便&#xff0c;让你轻松获取视频中的音频&#xff01; 1.音视频分离 这是最简单直接的方法之一&#xff0c;你可以使用视频编辑软件将视频导入&#xff0c;并对其进行音频分离&#xff0c;就可…

[Spring Boot Starter系列]Spring Boot自动装配原理

目录 一、介绍 二、Spring Boot实现自动装配的简单流程&#xff08;基于2.3.5.RELEASE版本&#xff09; 三、总结 一、介绍 什么是Spring Boot的自动装配&#xff1f; 以下描述部分来自Spring Boot官网&#xff1a; Spring Boot自动配置尝试根据您添加的jar依赖项自动配置您…

《kafka 核心技术与实战》课程学习笔记(八)

无消息丢失配置怎么实现&#xff1f; Kafka 只对“已提交”的消息&#xff08;committed message&#xff09;做有限度的持久化保证。 第一个核心要素是“已提交的消息”。 当 Kafka 的若干个 Broker 成功地接收到一条消息并写入到日志文件后&#xff0c;它们会告诉生产者程序…

机器学习4:基本术语

机器学习涉及很多专业术语&#xff0c;为了避免混淆概念&#xff0c;我们在学习中&#xff0c;首先必须统一语言&#xff1a;即充分理解专业术语&#xff0c;并采用专业术语来描述机器学习相关的内容。本节将介绍几种基本的机器学习术语。 目录 1.标签 2.特征 3.示例 4.模…

shardingjdbc入门-自问自答

1&#xff1a;shardingjdbc 是什么&#xff0c;它能做什么,解决了什么问题&#xff1f; 现实的问题是mysql单表存储是有上线的&#xff0c;因为mysql采用的是 B 树类型的索引&#xff0c;在数据量超过阈值的时候&#xff0c;索引的持续变大&#xff0c;会导致访问磁盘的IO次数增…

【永久服务器】EUserv

1. 请先自行准备网络&#xff08;我用的伦敦还可以&#xff09;、以及visa卡&#xff0c;淘宝可以代付&#xff0c;我总共花了97人民币&#xff08;10.94欧代付费&#xff09; 现在只能申请一台&#xff0c;多了会被删除&#xff0c;也就是两欧元&#xff0c;然后选择visa卡 选…

正版软件 | RadiAnt DICOM Viewer - 医学图像的PACS DICOM浏览器

辐射蚂蚁DICOM查看器 2023.1 最新版。 新增功能&#xff1a; 长度比计算。椭球体/子弹体积计算。添加了在 DICOM 标记窗口中将特定项目着色和/或固定到顶部的选项。 改进和错误修复&#xff1a; 使用多个关键字&#xff08;用 |&#xff09; 分隔&#xff09;搜索本地存档。…