对象、内置对象

@jarringslee

对象

对象(object)是js的一种引用数据类型,是一种无序的数据集合“ul”(类比于数组,有序的数据集合“ol”)。

基本上等于结构体。

对象的声明

//基本方法
let 对象名 = {声明元素
}

对象中的元素一般由属性和方法组成

  • 属性:对象的信息、特征。一般为名词性的键值对(属性名:属性值),多个键值对之间用逗号分隔。

    属性就是依附在对象上的变量(门面是变量,对象内就是属性)。

    属性名可以用单、双引号包裹(一般情况下省略),除非遇到特殊符号如空格、中横线作为属性名时。

    let obj = {name:'ljl',age:18,gender:'man',sing: function(){document.write('lalalala')}//若属性名为字符串、带有下划线则需带上单引号'best-friend':'lihua'
    }
    
  • 方法:对象的功能、行为。 方法名:函数


对象的增删改查

查找、访问元素 对象.属性名 或者 对象.['属性名'](中括号中不管是不是字符串都必须带上单引号)

修改元素 直接重新赋值即可

增加元素 对象.新建属性名 = 赋值

删除元素 delete delete 对象.属性名


遍历对象 for(in)语法

for(in)语法遍历数组:(输出的下标是字符串类型)

let arr = ['aa', 'b', 'ccc']
for (let k in arr) {
console.log(k) //顺序遍历数组的下标,即输出:012。
//注意:这里输出的下标是字符串类型
document.write(arr[k])
}

一般不用这个方法遍历数组。

该语法中,输出属性值的方法必须是对象.['属性名']

let obj = {name:'ljl',age:18,gender:'man','ex-bf':'cjx'
}
for (let k in obj){console.log(k) //顺序打印出属性名document.write(obj[k])
}

对象数组

let people = [{name:'ljl', age:18, gender:'man', 'ex-bf':'cjx'},{name:'ljl', age:18, gender:'man', 'ex-bf':'cjx'},{name:'ljl', age:18, gender:'man', 'ex-bf':'cjx'},{name:'ljl', age:18, gender:'man', 'ex-bf':'cjx'}
]
//遍历对象数组
for (let i = 0; i < people.length; i++) {console.log(people[i].age)document.write(people[i]['ex-bf'])
}

对象数组及js综合小案例 渲染学成在线
在这里插入图片描述
在原来学习css的基础上,利用js插入不同图片、标题和观看人数。
明显可以利用到一个包含图片、文本内容和数字的对象并集合成一个对象数组,在<script>中声明之后用for循环按照html标签模版输出即可。

<!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><style>* {margin: 0;padding: 0;}.w {width: 1200px;margin: auto;}body {background-color: #f3f5f7;}li {list-style: none;}a {text-decoration: none;}.clearfix:before,.clearfix:after {content: "";display: table;}.clearfix:after {clear: both;}.clearfix {*zoom: 1;}.box {margin-top: 30px;}.box-hd {height: 45px;}.box-hd h3 {float: left;font-size: 20px;color: #494949;}.box-hd a {float: right;font-size: 12px;color: #a5a5a5;margin-top: 10px;margin-right: 30px;}/* 把li 的父亲ul 修改的足够宽一行能装开5个盒子就不会换行了 */.box-bd ul {width: 1225px;}.box-bd ul li {position: relative;top: 0;float: left;width: 228px;height: 270px;background-color: #fff;margin-right: 15px;margin-bottom: 15px;transition: all .3s;}.box-bd ul li a {display: block;}.box-bd ul li:hover {top: -8px;box-shadow: 0 15px 30px rgb(0 0 0 / 10%);}.box-bd ul li img {width: 100%;}.box-bd ul li h4 {margin: 20px 20px 20px 25px;font-size: 14px;color: #050505;font-weight: 400;}.box-bd .info {margin: 0 20px 0 25px;font-size: 12px;color: #999;}.box-bd .info span {color: #ff7c2d;}</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><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>

内置对象

js内置对象,方便我们调用,提高开发效率

例如console.log document.write

内置对象Math 类似于C语言中提供数学运算函数的函数库,这里我们通过调用对象元素的形式进行调用

方法作用示例
Math.PI圆周率 π3.141592653589793
Math.E自然常数 e2.718281828459045
Math.LN22 的自然对数0.6931471805599453
Math.LN1010 的自然对数2.302585092994046
Math.LOG2E以 2 为底 e 的对数1.4426950408889634
Math.LOG10E以 10 为底 e 的对数0.4342944819032518
Math.SQRT22 的平方根1.4142135623730951
Math.SQRT1_21/2 的平方根0.7071067811865476
Math.random()生成 [0, 1) 之间的随机小数0.72634…
Math.ceil(x)向上取整Math.ceil(4.2) → 5
Math.floor(x)向下取整Math.floor(4.9) → 4
Math.round(x)四舍五入Math.round(4.5) → 5
Math.max(a,b,...)取最大值Math.max(3, 7, 2) → 7
Math.min(a,b,...)取最小值Math.min(3, 7, 2) → 2
Math.pow(base, exp)幂运算 base^expMath.pow(2, 3) → 8
Math.abs(x)绝对值Math.abs(-5) → 5

随机生成函数Math.random()

  • Math.random()
    永远返回 [0, 1) 区间内的随机小数,即 含 0 不含 1

  • 0 → 10 的随机整数

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

    先放大 11 倍,再向下取整 → 得到 0‒10 共 11 个值。

  • 5 → 10 的随机整数

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

    区间长度 (10-5+1)=6,再加偏移量 5 → 得到 5‒10。

  • 随机数组下标

    const idx = Math.floor(Math.random() * arr.length);
    const randomItem = arr[idx];
    

    其中arr.length已经是下标最大值加一了

  • 通用公式:N → M 的随机整数

    Math.floor(Math.random() * (M - N + 1)) + N
    
    // 生成 N~M 之间的随机整数(包含 N 和 M)
    function getRandom(N, M) {return Math.floor(Math.random() * (M - N + 1)) + N;
    }console.log(getRandom(4, 8));    // 示例:输出 4~8 之间的随机整数
    

    “区间长度乘随机,再向下取整,最后加起点”

随机函数小练习1 猜数字
很简单的if分支语句练习,重点是利用随机函数生成一个数字,并用if语句判断大小。在这个基础上可以用for循环设置规定的猜测次数,注意用布尔变量来检测次数是否用尽。

<!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><body><script>// 无限次数猜测// function getRandom(N, M) {//     return Math.floor(Math.random() * (M - N + 1)) + N;// }// let random = getRandom(1, 20)// while (true) {//     let num = +prompt('请输入您猜的数字')//     if (num > random) alert('猜的有点大了')//     else if (num < random) alert('猜的有点小了')//     else {//         alert('猜对啦,真厉害!')//         break//     }// }function getRandom(N, M) {return Math.floor(Math.random() * (M - N + 1)) + N;}let random = getRandom(1, 20)let flag = truefor (let i = 1; i <= 5; i++) {let num = +prompt('请输入您猜的数字')if (num > random) alert('猜的有点大了')else if (num < random) alert('猜的有点小了')else {alert('猜对啦,真厉害!')flag = falsebreak}}if (flag) alert('你失败啦!')</script>
</body></html>

随机函数小练习2 随机颜色
也没有什么难点,用for循环输出随机数组。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>random color</title>
</head><body><script>function rcolor(flag = true) {if (flag) {let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']// let f1 = Math.floor(Math.random() * 16)// let f2 = Math.floor(Math.random() * 16)// let f3 = Math.floor(Math.random() * 16)// let f4 = Math.floor(Math.random() * 16)// let f5 = Math.floor(Math.random() * 16)// let f6 = Math.floor(Math.random() * 16)// return `#${arr[f1]}${arr[f2]}${arr[f3]}${arr[f4]}${arr[f5]}${arr[f6]}`let str = '#'for (let i = 1; i <= 6; i++) {let f = Math.floor(Math.random() * arr.length)str += arr[f]}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},${b})`}}// let bool = +prompt('真还是假?')document.write(rcolor(1))</script>
</body></html>

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【工程篇】07:如何打包conda环境并拷贝到另一台服务器上

这是一份以名为 qwen2.5-vl 的 Conda 环境为例的详细操作手册&#xff0c;指导您如何将其打包并迁移至另一台服务器。操作手册&#xff1a;迁移 Conda 环境 qwen2.5-vl 至新服务器 本文档将提供两种有效的方法来迁移您的 qwen2.5-vl 环境。请根据您的具体需求和服务器条件选择最…

rustdesk远控电脑替代todesk,平替向日葵等软件

rustdesk网页端远控电脑docker run --restart always \ --privileged \ -p 9000:9000 \ -p 21114:21114 \ -p 21115:21115 \ -p 21116:21116 \ -p 21116:21116/udp \ -p 21117:21117 \ -p 21118:21118 \ -p 21119:21119 \ -e KEYj8muHpzr2HK00zm9D94b1UFkaJ1bEiWsyA1qxb1nOA \ …

板凳-------Mysql cookbook学习 (十二--------1)

第9章 存储例程&#xff0c;触发器和计划事件 326 9.0 概述 326 9.1 创建复合语句对象 329 mysql> -- 恢复默认分隔符 mysql> DELIMITER ; mysql>mysql> DROP FUNCTION IF EXISTS avg_mail_size; Query OK, 0 rows affected (0.02 sec)mysql> DELIMITER $$ mysq…

密码学系列文(3)--分组密码

一、分组密码概述分组密码是许多系统安全的一个重要组成部分&#xff0c;可用于构造&#xff1a;拟随机数生成器流密码消息认证码(MAC)和杂凑函数消息认证技术、数据完整性机构、实体认证协议以及单钥数字签字体制的核心组成部分应用中对于分组密码的要求&#xff1a;安全性运行…

WCDB soci 查询语句

测试代码 #pragma once #include <string> #include <vector>// Assume OperationLog is a struct representing a row in the table struct OperationLog {int id;std::string op_type;std::string op_subtype;std::string details;std::string timestamp; };clas…

lesson16:Python函数的认识

目录 一、为什么需要函数&#xff1f; 1. 拒绝重复造轮子 2. 让代码像句子一样可读 3. 隔离变化&#xff0c;降低维护成本 二、函数的定义&#xff1a;编写高质量函数的5个要素 基本语法框架 1. 函数命名的黄金法则&#xff08;PEP8规范&#xff09; 2. 不可或缺的文档…

通过轮询方式使用LoRa DTU有什么缺点?

在物联网系统中&#xff0c;DTU&#xff08;Data Transfer Unit&#xff09;通常用于通过485或M-Bus等接口抄读子设备的数据&#xff0c;并将这些数据传输到平台侧。然而&#xff0c;如果DTU采用轮询方式与平台通信&#xff0c;会带来一系列问题&#xff0c;尤其是在功耗和系统…

Syntax Error: Error: PostCSS received undefined instead of CSS string

报错&#xff1a;Syntax Error: Error: PostCSS received undefined instead of CSS string npm rebuild node-sass报错&#xff1a;npm i canvas 报错 canvas2.11.2 run install node-pre-gyp install --fallback-to-build --update-binary npm install canvas --canvas_binar…

人工智能之数学基础:概率论和数理统计在机器学习的地位

概率和统计的概念概率统计是各类学科中唯一一门专门研究随机现象的规律性的学科&#xff0c;随机现象的广泛性决定了这一学科的重要性。概率论是数学的分支&#xff0c;它研究的是如何定量描述随机现象及其规律。我们之前经常在天气软件上看到&#xff1a;“今天下雨的概率是95…

第十四章 Stream API

JAVA语言引入了一个流式Stream API,这个API对集合数据进行操作&#xff0c;类似于使用SQL执行的数据库查询&#xff0c;同样可以使用Stream API并行执行操作。Stream和Collection的区别Collection:静态的内存数据结构&#xff0c;强调的是数据。Stream API:和集合相关的计算操作…

Oracle数据库各版本间的技术迭代详解

今天我想和大家聊聊一个我们可能每天都在用&#xff0c;但未必真正了解的技术——Oracle数据库的版本。如果你是企业的IT工程师&#xff0c;可能经历过“升级数据库”的头疼&#xff1b;如果你是业务负责人&#xff0c;可能疑惑过“为什么一定要换新版本”&#xff1b;甚至如果…

论文reading学习记录3 - weekly - 模块化视觉端到端ST-P3

文章目录前言一、摘要与引言二、Related Word2.1 可解释的端到端架构2.2 鸟瞰图2.3 未来预测2.4 规划三、方法3.1 感知bev特征积累3.1.1 空间融合&#xff08;帧的对齐&#xff09;3.1.2 时间融合3.2 预测&#xff1a;双路径未来建模3.3 规划&#xff1a;先验知识的整合与提炼4…

crawl4ai--bitcointalk爬虫实战项目

&#x1f4cc; 项目目标本项目旨在自动化抓取 Bitcointalk 论坛中指定板块的帖子数据&#xff08;包括主贴和所有回复&#xff09;&#xff0c;并提取出结构化信息如标题、作者、发帖时间、用户等级、活跃度、Merit 等&#xff0c;以便进一步分析或使用。本项目只供科研学习使用…

调用 System.gc() 的弊端及修复方式

弊端分析不可控的执行时机System.gc() 仅是 建议 JVM 执行垃圾回收&#xff0c;但 JVM 可自由忽略该请求&#xff08;尤其是高负载时&#xff09;。实际回收时机不确定&#xff0c;无法保证内存及时释放。严重的性能问题Stop-The-World 停顿&#xff1a;触发 Full GC 时会暂停所…

git merge 和 git rebase 的区别

主要靠一张图&#xff1a;区别 git merge git checkout feature git merge master此时在feature上git会自动产生一个新的commit 修改的是当前分支 feature。 git rebase git checkout feature git rebase master&#xff08;在feature分支上执行&#xff0c;修改的是master分支…

Java学习--JVM(2)

JVM提供垃圾回收机制&#xff0c;其也是JVM的核心机制&#xff0c;其主要是实现自动回收不再被引用的对象所占用的内存&#xff1b;对内存进行整理&#xff0c;防止内存碎片化&#xff1b;以及对内存分配配进行管理。JVM 通过两种主要算法判断对象是否可回收&#xff1a;引用计…

用大模型(qwen)提取知识三元组并构建可视化知识图谱:从文本到图谱的完整实现

引言 知识图谱作为一种结构化的知识表示方式&#xff0c;在智能问答、推荐系统、数据分析等领域有着广泛应用。在信息爆炸的时代&#xff0c;如何从非结构化文本中提取有价值的知识并进行结构化展示&#xff0c;是NLP领域的重要任务。知识三元组&#xff08;Subject-Relation-O…

(附源码)基于 Go 和 gopacket+Fyne 的跨平台网络抓包工具开发实录

基于 Go 和 gopacket Fyne 的跨平台网络抓包工具开发实录 一、项目背景 在网络安全、协议分析、运维排查等场景中&#xff0c;抓包工具是不可或缺的利器。Wireshark 虽然功能强大&#xff0c;但对于部分初学者或有定制需求的开发者来说&#xff0c;学习曲线较陡&#xff0c;且…

Langchain和Faiss搭建本地知识库对比

对比 对比维度及优缺点分析对比维度LangChain&#xff08;封装 FAISS&#xff09;直接使用 FAISS易用性✅ 高&#xff0c;提供高级封装&#xff0c;简化开发流程❌ 中等&#xff0c;需要熟悉 FAISS API学习成本✅ 低&#xff0c;适合快速开发❌ 高&#xff0c;需要掌握 FAISS 的…

Java常用命令汇总

JDK 工具命令jps&#xff08;Java Virtual Machine Process Status Tool&#xff09;命令示例&#xff1a;jps -l 应用场景&#xff1a;列出当前系统中所有Java进程的PID和主类名&#xff0c;常用于快速定位Java应用的进程ID。javac&#xff08;Java Compiler&#xff09;命令示…