JavaScript 基础五 对象

JavaScript 基础五 对象

  • 1. 对象
  • 2. 对象使用
    • ① 声明语法
    • ② 对象有属性和方法组成
    • ③ 属性
      • 对象属性的增删改查操作
    • ④ 方法
  • 3. 对象遍历
    • 实例
  • 4. 内置对象
    • ① 内置对象
    • ② 内置对象Math
      • 属性
      • 方法

引入:保存网站用户信息,比如姓名、年龄、电话号码,用以前学过的数据类型不方便。

1. 对象

对象 object 是JavaScript里的一种数据类型。
可以理解为一种无序的数据集合,注意数组是有序的数据集合。

let obj = {
	uname: 'pink',
	age: 18,
	gender: '女'
}

对象的特点:
①无序的数据的集合
②可以详细描述某个事物

2. 对象使用

① 声明语法

let 对象名= {}
let 对象名= new Object()

例如 let person= {} 声明了一个person的对象

{}是对象字面量。

对象和null

let obj = {}
typeof obj 是 object
typeof null 是 object
所以也可以 用 let obj  = null 表示这个变量我以后要来存放对象

② 对象有属性和方法组成

属性:信息或特征(名词)。比如手机尺寸、颜色、重量等
方法:功能或行为(动词)。比如手机打电话、发短信、玩游戏等

let 对象名 = {
	属性名: 属性值,
	方法名: 函数
}

③ 属性

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

  • 属性都是成对出现的,包括属性名和值,它们之间用英文冒号(:)分隔。
  • 多个属性之间用英文逗号分隔。
  • 属性就是依附在对象上的变量(外面是变量,对象内是属性)
  • 属性名可以使用 双引号或者单引号,一般情况下省略,除非名称遇到特殊符号如空格、中横线等。
  • 对象属性没有顺序。

对象属性的增删改查操作

增删改查
在这里插入图片描述
在这里插入图片描述

对象	['属性名']

④ 方法

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

let person = {
	name: '刘德华',
	singSong: function() {
		console.log('冰雨')
	}
	count: function(x, y) {
		console.log(x+y)
	}
}

方法调用对象名.方法名

person.singSong()

类比 document.wirte()

方法增加也可以和属性增加一样,但是我们一般不这么做:

let user = {}
user.name = 'xiaoming'
user.['age'] = 18

//动态添加'对象的方法'
user.move = function() {
  console.log('移动一点距离')
}

3. 对象遍历

对象里面是无序的键值对,没有规律,不像数组里面有规律的下标。

for in语法

let obj = {
	name: 'pink',
	age: 18, 
	gender: '女'
}

for(let k in obj) {
	console.log(k) //获得对象属性是 k
	console.log(obj[k]) //获得对象值是 obj[k]
}

这里不可以写 obj.k。如果是obj.name,那么取出的是name这个属性,但是如果写成了obj.k,取的就是 k 这个属性。当然不仅仅是这么简单,还更因为 key 里面存的是 字符串类型,key 是 ‘name’ 而不是 name

也可以用在数组中,但因为索引是字符串型的,很少会拿这种方式遍历数组。

let arr = ['pink', 'green', 'blue']
for(let k in arr) {
	console.log(k) //数组的下标 索引号 ,请注意这里打印出来的是字符串类型
	
}

数组对象: 数组的每一个成员都是对象

let students = [
	{name: '小明', age: 18, gender: '男', hometown: '河北省'} ,
	{name: '小红', age: 19, gender: '女', hometown: '河男省'} ,
	{name: '小刚', age: 17, gender: '男', hometown: '山东省'} ,
	{name: '小丽', age: 18, gender: '女', hometown: '山西省'} 
]

for(int i = 0; i < students.length; i++) {
	console.log(i) //下标索引号
	console.log(students[i]) //每一个对象
	for(let k in students[i]) {
		
	}
}

实例

在这里插入图片描述

静态写法为:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<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>
<body>
  <table>
    <caption>学生列表</caption>
    <tr>
      <th>序号</th>
      <th>姓名</th>
      <th>年龄</th>
      <th>性别</th>
      <th>家乡</th>
    </tr>
    <tr>
      <td>1</td>
      <td>小明</td>
      <td>18</td>
      <td></td>
      <td>河北省</td>
    </tr>
    <tr>
      <td>2</td>
      <td>小红</td>
      <td>19</td>
      <td></td>
      <td>河南省</td>
    </tr>
    <tr>
      <td>3</td>
      <td>小刚</td>
      <td>17</td>
      <td></td>
      <td>山西省</td>
    </tr>
    <tr>
      <td>4</td>
      <td>小丽</td>
      <td>18</td>
      <td></td>
      <td>山东省</td>
    </tr>
  </table>
</body>
</html>

动态渲染写法:
① 数据准备
② 渲染页面

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<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>
<body>
  <table>
    <caption>学生列表</caption>
    <tr>
      <th>序号</th>
      <th>姓名</th>
      <th>年龄</th>
      <th>性别</th>
      <th>家乡</th>
    </tr>
    <script>
      let students = [
        {name: '小明', age: 18, gender: '男', hometown: '河北省'} ,
        {name: '小红', age: 19, gender: '女', hometown: '河男省'} ,
        {name: '小刚', age: 17, gender: '男', hometown: '山东省'} ,
        {name: '小丽', age: 18, gender: '女', hometown: '山西省'} 
      ]

      for(let i = 0; i < students.length; i++) {
        document.write(`
          <tr>
            <td>${i+1}</td>
            <td>${students[i].name}</td>
            <td>${students[i].age}</td>
            <td>${students[i].gender}</td>
            <td>${students[i].hometown}</td>
          </tr>
        `)
      }
      
    </script>
  </table>
</body>
</html>

4. 内置对象

① 内置对象

例如 document.write(), console.log()

② 内置对象Math

Math对象是 JS提供的一个“数学”对象
作用:提供了一系列做数学运算的方法

Math对象包含的方法有:
Ø random:生成0-1之间的随机数(包含0不包括1)
Ø ceil:向上取整
Ø floor:向下取整
Ø max:找最大数
Ø min:找最小数
Ø pow:幂运算
Ø abs:绝对值
Ø Math对象在线文档

属性

  • Math.PI,获取圆周率
// 圆周率
console.log(Math.PI);

方法

  • Math.random,生成 0 到 1 间的随机数
// 0 ~ 1 之间的随机数, 包含 0 不包含 1
Math.random()
  • Math.ceil,数字向上取整
    ceil是天花板的意思。
// 舍弃小数部分,整数部分加1
Math.ceil(3.4) // 4
  • Math.floor,数字向下取整
// 舍弃小数部分,整数部分不变
Math.floor(4.68) // 4
  • 注意区别 parseInt()取整函数
    parseInt可以转化字符
parseInt(1.2) // 1
parseInt('12px') // 12
  • Math.round,四舍五入取整
    小数部分等于0.5会舍入到正方向上相邻的整数。
// 取整,四舍五入原则
Math.round(5.46539)
Math.round(4.849)

Math.round(-20.5)
Math.round(-20.51)
  • 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)

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ENG-2,可用于监测细胞内钠离子的动态变化

Replacement of Asante NaTrium Green-2 AM钠离子指示探针&#xff0c;ENG-2&#xff0c;可用于监测细胞内钠离子的动态变化 您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;Replacement of Asante NaTrium Green-2 AM钠离子指示探针&#xff0c;ENG-2 一、基本信…

如何对视频进行翻译

下载视频和翻译软件 视频和翻译软件点击下载就行了&#xff0c;下载之后解压&#xff0c;然后把两个exe点一下。接下来如果资金充裕或者要求比较高的可以使用各个api&#xff0c;网站里有视频介绍了。 经济适用视频翻译 原理简析 首先这个软件对视频的翻译的流程大致如下&a…

使用Python的Turtle模块简单绘制烟花效果

import turtle import random# 初始化屏幕 screen turtle.Screen() screen.bgcolor("black") screen.title("烟花模拟")# 创建一个Turtle来绘制烟花 firework turtle.Turtle() firework.hideturtle() firework.speed(0) # 设置绘图速度为最快# 绘制烟花…

如何系统的自学Python?通义千问、讯飞星火、文心一言及ChatGPT的回答

如何系统的自学Python&#xff1f;来看看通义千问、讯飞星火、文心一言及ChatGPT的回答. 第一个是马老师的通义千问 系统地自学Python是一个循序渐进的过程&#xff0c;从基础语法到实践项目&#xff0c;再到专业领域的深入学习。下面是一个详细的步骤指南&#xff1a; 了解Py…

vulhub靶机activemq环境下的CVE-2015-5254(ActiveMQ 反序列化漏洞)

影响范围 Apache ActiveMQ 5.x ~ Apache ActiveMQ 5.13.0 远程攻击者可以制作一个特殊的序列化 Java 消息服务 (JMS) ObjectMessage 对象&#xff0c;利用该漏洞执行任意代码。 漏洞搭建 没有特殊要求&#xff0c;请看 (3条消息) vulhub搭建方法_himobrinehacken的博客-CSD…

秦始皇帝陵K0007陪葬坑文物展览与文物预防性保护的璀璨交汇

秦始皇帝陵博物院近日迎来了一场引人注目的展览——“何止秦俑——秦陵苑囿之K0007陪葬坑”。此次展览首次集中展示了K0007陪葬坑出土的别具一格的陶俑、鲜活灵动的青铜水禽等珍贵文物。然而&#xff0c;这些文物的安全展出离不开高科技的监测平台与实时终端的24小时不间断保护…

英语不太行?数模美赛必备的翻译工具!

DeepL翻译:全世界最准确的翻译&#xff08;自称&#xff09; 网址&#xff1a;https://www.deepl.com/translator 优点&#xff1a;在专有名词翻译方面很准确&#xff0c;适合学术论文,可免费全文件翻译 缺点&#xff1a;全文件翻译时格式较乱&#xff0c;不过可以用于帮助初步…

Qt第一个项目(元对象系统)

效果是这样的&#xff0c;点击boy长大一岁或者girl长大一岁 qt的文件构造都是两个头文件三个源文件&#xff0c;源文件中有个cpp文件&#xff0c;它是程序的入口&#xff0c;一个项目中只能有一个main函数 #include "widget.h"#include <QApplication>int mai…

C#用正则表达式Regex.Matches 方法检查字符串中重复出现的词

目录 一、Regex.Matches 方法 1.重载 二、Matches(String, String, RegexOptions, TimeSpan) 1.定义 2.示例 三、Matches(String, String, RegexOptions) 1.定义 2.示例 3.示例&#xff1a;用正则表达式检查字符串中重复出现的词 四、Matches(String, Int32) 1.定义…

DRV8301 踩坑记,Status1 D10 老是 Fault

波形如上&#xff1a; 看第一个时钟出来的数据&#xff08;Status1 读完自动清除&#xff1f;&#xff09;&#xff0c;因此数据是&#xff1a;0x20 输入结构体解析&#xff1a; 可以看到&#xff0c;FETHA_OC了也就是A桥上管过流了&#xff1b; 检查一下硬件看看&#xff1…

nodejs+vue+ElementUi高校创业项目申报系统w6f1g

此系统设计主要采用的是nodejs语言来进行开发&#xff0c;采用vue框架技术&#xff0c;框架分为三层&#xff0c;分别是控制层Controller&#xff0c;业务处理层Service&#xff0c;持久层dao&#xff0c;能够采用多层次管理开发&#xff0c;对于各个模块设计制作有一定的安全性…

Lazysysadmin

信息收集 # nmap -sn 192.168.1.0/24 -oN live.port Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-30 21:10 CST Nmap scan report for 192.168.1.1 (192.168.1.1) Host is up (0.00075s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nma…

强化学习-google football 实验记录

google football 实验记录 1. gru模型和dense模型对比实验 实验场景&#xff1a;5v5(控制蓝方一名激活球员)&#xff0c;跳4帧&#xff0c;即每个动作执行4次 实验点&#xff1a; 修复dense奖励后智能体训练效果能否符合预期 实验目的&#xff1a; 对比gru 长度为16 和 dens…

机器学习算法决策树

决策树的介绍 决策树是一种常见的分类模型&#xff0c;在金融风控、医疗辅助诊断等诸多行业具有较为广泛的应用。决策树的核心思想是基于树结构对数据进行划分&#xff0c;这种思想是人类处理问题时的本能方法。例如在婚恋市场中&#xff0c;女方通常会先询问男方是否有房产&a…

Outlook技巧:如何插入可以用指定浏览器打开的链接

Outlook中的链接&#xff0c;有时直接点击无法打开&#xff0c;找本地Edge才能打开。如何让Url能够指定打开的浏览器呢&#xff1f; 插入链接时&#xff0c;直接加上前缀Microsoft-edge即可。 操作步骤&#xff1a; 编辑邮件界面&#xff0c;菜单选择插入-》链接 在链接地址…

如何使用淘宝客?

1.定义&#xff1a;是一种按成交计费的推广工具&#xff0c;由淘宝客帮助商家推广商品&#xff0c;买家通过推广链接进入完成交易后&#xff0c;商家按照设置佣金支付给淘宝客费用。 2.优势&#xff1a; &#xff08;1&#xff09;展示、点击全免费。 &#xff08;2&#xf…

Redis核心技术与实战【学习笔记】 - 10.浅谈CPU架构对Redis性能的影响

概述 可能很多人都认为 Redis 和 CPU 的关系简单&#xff0c;Redis 的线程在 CPU 上运行&#xff0c;CPU 快 Reids 处理请求的速度也很快。 其实&#xff0c;这种认知是片面的&#xff0c;CPU 的多核架构及多 CPU 结构&#xff0c;也会影响到 Redis 的性能。如果不了解 CPU 对…

嵌入式学习第十五天

内存管理: 1.malloc void *malloc(size_t size); 功能: 申请堆区空间 参数: size:申请堆区空间的大小 返回值: 返回获得的空间的首地址 失败返回NULL 2.free void free(void *ptr); 功能: 释放堆区空间 注…

【芯片设计- RTL 数字逻辑设计入门 番外篇 8.1 -- memory repair 详细介绍】

文章目录 memory repair 详细介绍Memory Repair 方法Memory Repair 过程举例memory repair 详细介绍 SoC (System on Chip) 的 Memory Repair 是一种技术,用于检测和修复内存中的损坏单元。由于SoC内部集成了大量的逻辑和存储单元,包括RAM(随机访问存储器)、ROM(只读存储…

使用 vite 配置请求代理

介绍vite vue官方提供的前端构建工具。 由两个部分组成 开发服务器&#xff1a;基于ES模块提供丰富的内建功能 构建指令&#xff1a;使用 Rollup 打包代码&#xff0c;提供预设配置 Rollup&#xff1a; Rollup 是一个 JavaScript 模块打包器&#xff0c;它可以将多个模块打包成…