JavaScript学习文档(6):什么是对象、对象使用、遍历对象、内置对象、术语解释

news2024/11/23 8:30:10

目录

一、什么是对象

1、对象是什么

二、对象使用

1、对象使用

2、对象有属性和方法组成

(1)对象属性(增删改查)

(2)对象方法

三、遍历对象

1、遍历对象

2、渲染学生信息案例

四、内置对象

1、内置对象是什么

2、内置对象-Math

3、内置对象-生成任意范围随机数

(1)内置对象-生成任意范围随机数

(2)随机点名案例

(3)猜数字游戏案例

(4)生成随机颜色案例

五、拓展-术语解释

1、一些专业术语

2、拓展-基本数据类型和引用数据类型

3、堆栈空间分配区别


一、什么是对象

1、对象是什么

  • 对象( object) : JavaScript里的一种数据类型
  • 可以理解为是一种无序的数据集合,注意数组是有序的数据集合
  • 用来描述某个事物,例如描述一个人人有姓名、年龄、性别等信息、还有吃饭睡觉打代码等功能如果用多个变量保存则比较散,用对象比较统一
  • 比如描述班主任信息:静态特征(姓名,年龄,身高,性别,爱好)=>可以使用数字,字符串,数组,布尔类型等表示动态行为(点名,唱,跳, rap)=>使用函数表示

二、对象使用

1、对象使用

  • 语法

let 对象名 = {}

let 对象名 = new Object()

例如:

let person = {}   //声明一个person的对象

实际开发中,我们多用花括号。{}是对象字面量

2、对象有属性和方法组成

  • 属性:信息或叫特征(名词)。比如手机尺寸、颜色、重量等...
  • 方法:功能或叫行为(动词)。比如手机打电话、发短信、玩游戏...
(1)对象属性(增删改查)
  • 数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是名词性的。
 // 1.声明对象
    let pink = {
      uname: 'pink',
      age: 18,
      gender: '男'
    }
  • 属性-查
  • 语法

对象名.属性

对象名['属性']

  • 属性-改
  • 语法

对象名.属性 = 新值

  • 属性-增
  • 语法

对象名.新属性 = 新值

  • 属性-删
  • 语法

delete 对象名.属性

示例代码如下所示:

 // 1.声明对象
    let pink = {
      uname: 'pink',
      age: 18,
      gender: '女'
    }
    // // console.log(pink)
    // // console.log(typeof pink)
    // // 改 把性别的女改为男
    // pink.gender = '男'
    // console.log(pink)
    // // 增
    // pink.hobby = '足球'
    // console.log(pink)
    // // 删 (了解)
    // delete pink.age
    // console.log(pink)
    // // let num = 10
    // num = 20
    // console.log(num)
    // 1. 声明
    // console.log(window.name)
    let obj = {
      'goods-name': '小米10青春版',
      num: '100012816024',
      weight: '0.55kg',
      address: '中国大陆'
    }
    obj.name = '小米10 PLUS'
    obj.color = '粉色'
    // console.log(obj.name)
    console.log(obj.num)
    console.log(obj.weight)
    console.log(obj.address)
    console.log(obj.color)
    // console.log(obj.goods - name)
    // 查的另外一种属性:
    // 对象名['属性名']
    console.log(obj['goods-name'])


    // 查总结:
    // (1) 对象名.属性名  obj.age
    console.log(obj.num)
    // (2) 对象名['属性名']  obj['age']
    console.log(obj['num'])

    // // console.log(address)
    // // 2. 使用属性 查  对象名.属性名
    // console.log(obj.address)
    // console.log(obj.name)

改和增语法一样,判断标准就是对象有没有这个属性,没有就是新增,有就是改

(2)对象方法
  • 数据行为性的信息称为方法,如跑步、唱歌等,一般是动词性的,其本质是函数。
  • 声明对象,并添加了若干方法后,可以使用﹒调用对象中函数,我称之为方法调用。
  • 也可以添加形参和实参

示例代码如下:

    let obj = {
      uname: '刘德华',
      // 方法
      song: function (x, y) {
        // console.log('冰雨')
        console.log(x + y)
      },
      dance: function () { }
    }
    // 方法调用 对象名.方法名
    // console.log(obj.song(1, 2))
    obj.song(1, 2)

    // document.write('123')
  • 注意:千万别忘了给方法名后面加小括号

三、遍历对象

1、遍历对象

for遍历对象的问题:

  • 对象没有像数组一样的length属性,所以无法确定长度
  • 对象里面是无序的键值对,没有规律.不像数组里面有规律的下标

示例代码如下:

    // for in 我们不推荐遍历数组
    // let arr = ['pink', 'red', 'blue']
    // for (let k in arr) {
    //   console.log(k)  // 数组的下标 索引号  但是是字符串 '0'
    //   console.log(arr[k])  // arr[k]
    // }
    // 1. 遍历对象 for in   
    let obj = {
      uname: 'pink老师',
      age: 18,
      gender: '男'
    }
    // 2. 遍历对象
    for (let k in obj) {
      console.log(k) // 属性名  'uname'   'age'
      // console.log(obj.uname)
      // console.log(obj.k)
      // console.log(obj.'uname')
      // console.log(obj['uname'])   'uname'  === k
      console.log(obj[k])  // 输出属性值  obj[k]
    }
  • 一般不用这种方式遍历数组、主要是用来遍历对象
  • for in语法中的k是一个变量,在循环的过程中依次代表对象的属性名
  • 由于k是变量,所以必须使用[]语法解析
  • 一定记住: k是获得对象的属性名,对象名[k]是获得属性值

2、渲染学生信息案例

示例代码如下:

    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++) {
      // console.log(i)  // 下标索引号
      // console.log(students[i]) // 每个对象
      console.log(students[i].name)
      console.log(students[i].hometown)
    }

运行结果如下:

学生信息渲染成表格:

示例代码如下:

    <h2>学生信息</h2>
    <p>将数据渲染到页面中...</p>

    <table>
        <caption>学生列表</caption>
        <tr>
            <th>序号</th>
            <th>姓名</th>
            <th>年龄</th>
            <th>性别</th>
            <th>家乡</th>
        </tr>
        <!-- script写到这里 -->
        <script>
            // 1. 数据准备
            let students = [
                { name: '小明', age: 18, gender: '男', hometown: '河北省' },
                { name: '小红', age: 19, gender: '女', hometown: '河南省' },
                { name: '小刚', age: 17, gender: '男', hometown: '山西省' },
                { name: '小丽', age: 18, gender: '女', hometown: '山东省' },
                { name: '晓强', age: 16, gender: '女', hometown: '蓝翔技校' }
            ]
            // 2. 渲染页面
            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>

四、内置对象

1、内置对象是什么

  • JavaScript内部提供的对象,包含各种属性和方法给开发者调用
  • 思考:我们之前用过内置对象吗?比如:document.write()、console.log()

2、内置对象-Math

  • 介绍:Math对象是JavaScript提供的一个“数学”对象
  • 作用:提供了一系列做数学运算的方法
  • Math对象包含的方法有:

详细查找学习网站:Math对象在线文档(MDN)

3、内置对象-生成任意范围随机数

(1)内置对象-生成任意范围随机数
  • Math.random()随机数函数,返回一个0-1之间,并且包括0不包括1的随机小数[0,1)
  • 如何生成0-10的随机数呢?

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

  • 如何生成5-10的随机数?

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

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

Math.floor(Math.random() * (M - N+1)) +N

(2)随机点名案例

需求:请把['赵云','黄忠,'关羽','张飞','马超','刘备',‘曹操]随机显示一个名字到页面中,但是不允许重复显示

示例代码如下:

    let arr = ['赵云', '黄忠', '关羽', '张飞', '马超', '刘备', '曹操']
    // 1. 得到一个随机数, 作为数组的索引号, 这个随机数 0~6
    let random = Math.floor(Math.random() * arr.length)
    // 2. 页面输出数组里面的元素 
    document.write(arr[random])

    // 3. splice(起始位置(下标), 删除几个元素)
    arr.splice(random, 1)
    console.log(arr)
(3)猜数字游戏案例

需求:程序随机生成1~10之间的一个数字,用户输入一个数字,并设置猜的次数

分析:

①如果大于该数字,就提示,数字猜大了,继续猜

②如果小于该数字,就提示,数字猜小了,继续猜

③如果猜对了,就提示猜对了,程序结束

示例代码如下:

    // 1. 随机生成一个数字 1~10
    // 取到 N ~ M 的随机整数
    function getRandom(N, M) {
      return Math.floor(Math.random() * (M - N + 1)) + N
    }
    let random = getRandom(1, 10)
    // 2. 设定三次  三次没猜对就直接退出
    let flag = true  // 开关变量 
    for (let i = 1; i <= 3; i++) {
      let num = +prompt('请输入1~10之间的一个数字:')
      if (num > random) {
        alert('您猜大了,继续')
      } else if (num < random) {
        alert('您猜小了,继续')
      } else {
        flag = false
        alert('猜对了,真厉害')
        break
      }
    }
    // 写到for的外面来
    if (flag) {
      alert('次数已经用完')
    }

(4)生成随机颜色案例

需求:该函数接收一个布尔类型参数,表示颜色的格式是十六进制还是rgb格式。

示例代码如下:

    // 1. 自定义一个随机颜色函数
    function getRandomColor(flag = true) {
      if (flag) {
        // 3. 如果是true 则返回 #ffffff
        let str = '#'
        let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
        // 利用for循环随机抽6次 累加到 str里面
        for (let i = 1; i <= 6; i++) {
          // 每次要随机从数组里面抽取一个  
          // random 是数组的索引号 是随机的
          let random = Math.floor(Math.random() * arr.length)
          // str = str + arr[random]
          str += arr[random]
        }
        return str
        
      } else {
        // 4. 否则是 false 则返回 rgb(255,255,255)
        let r = Math.floor(Math.random() * 256)  // 55
        let g = Math.floor(Math.random() * 256)  // 89
        let b = Math.floor(Math.random() * 256)  // 255
        return `rgb(${r},${g},${b})`
      }
    }
    // 2. 调用函数 getRandomColor(布尔值)
    console.log(getRandomColor(false))
    console.log(getRandomColor(true))
    console.log(getRandomColor())

五、拓展-术语解释

1、一些专业术语

2、拓展-基本数据类型和引用数据类型

简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型

  • 值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型string , number, boolean,undefined,null
  • 引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型通过new关键字创建的对象(系统对象、自定义对象),如Object、Array、Date等

3、堆栈空间分配区别

(1)栈(操作系统)∶由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈;简单数据类型存放到栈里面

(2)堆(操作系统)∶存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。引用数据类型存放到堆里面

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

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

相关文章

旅游行业怎么利用C#接口发送短信

旅游企业一般拥有众多的分支机构&#xff0c;同时各地分支机构又有众多下属分散在当地各区的旅游营业报名点&#xff0c;以前传统的解决方案是采用专线、MODEM拔号等方式&#xff0c;专线的成本很高&#xff0c;MODEM拔号更费时&#xff0c;且长途拔号互联成本在多点情况下费用…

scikit-learn特征抽取

为什么需要特征工程 数据和特征决定了机器学习的上限&#xff0c;而模型和算法只是逼近这个上限而已 什么是特征工程 特征工程是使用专业背景知识和技巧处理数据&#xff0c;使得特征能在机器学习算法上发挥更好的作用的过程 意义&#xff1a;会直接影响机器学习的效果 特征…

Type-C无线麦克风方案

在数字化浪潮的推动下&#xff0c;音频设备正经历着前所未有的变革。从传统的有线麦克风到如今的蓝牙无线麦克风&#xff0c;每一次技术的飞跃都极大地丰富了我们的音频体验。而今&#xff0c;随着Type-C接口的普及与技术的不断成熟&#xff0c;Type-C无线麦克风正悄然成为音频…

数据结构----红黑树

小编会一直更新数据结构相关方面的知识&#xff0c;使用的语言是Java&#xff0c;但是其中的逻辑和思路并不影响&#xff0c;如果感兴趣可以关注合集。 希望大家看完之后可以自己去手敲实现一遍&#xff0c;同时在最后我也列出一些基本和经典的题目&#xff0c;可以尝试做一下。…

DRF——Filter条件搜索模块

文章目录 条件搜索自定义Filter第三方Filter内置Filter 条件搜索 如果某个API需要传递一些条件进行搜索&#xff0c;其实就在是URL后面通过GET传参即可&#xff0c;例如&#xff1a; /api/users?age19&category12在drf中也有相应组件可以支持条件搜索。 自定义Filter …

学习2d直线拟合-2

参考文章 直线拟合算法&#xff08;续&#xff1a;加权最小二乘&#xff09;_加权拟合直线法-CSDN博客 对比了参考文中和opencv中的直线拟合权重&#xff0c;不知道理解的对不对&#xff0c;前者是权重平方&#xff0c;后者没有平方

迷雾大陆辅助:VMOS云手机助力升级装备系统秘籍!

在《迷雾大陆》的广阔世界中&#xff0c;装备的选择和获取对于每一位冒险者来说都是至关重要的。为了让玩家能够更轻松地管理装备并在冒险中获得更高的效率&#xff0c;VMOS云手机提供了专属定制版云手机&#xff0c;内置游戏安装包&#xff0c;不需要重新下载安装游戏。VMOS云…

【VectorNet】vectornet网络学习笔记

文章目录 前言(vectornet算法流程)(向量表示)(图构建)(子图构建)(全局图构建)(解码器: 轨迹预测)(辅助研究)(损失函数)(实验)(问题厘清) VectorNet Overview 前言 论文: https://arxiv.org/pdf/2005.04259代码: https://github.com/xk-huang/yet-another-vectornet年份: 2020.…

Hadoop联邦模式搭建

在Hadoop架构中提供了三类搭建方式&#xff0c;第一类是给测试或开发人员使用的伪分布式或单NN节点搭建方式&#xff0c;第二类是用来商用化并解决NN单点故障的HA搭建方式&#xff0c;第三类就是这里要说的联邦模式&#xff0c;它本身也是一种供给商用的模式&#xff0c;但是它…

【Apache Doris】周FAQ集锦:第 19 期

【Apache Doris】周FAQ集锦&#xff1a;第 19 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户…

openmediavault 存储安装

1、简介 openmediavault NAS存储&#xff0c;支持linux和windows文件共享&#xff08;文件系统共享&#xff09;&#xff0c;有中文web界面&#xff0c;有filebrowser插件可以web界面管理、下载文件&#xff0c;有FTP插件支持ftp操作&#xff0c;有用户管理&#xff1b;插件丰富…

“七人团裂变风暴:重塑社交电商格局

在当今商业浪潮中&#xff0c;七人共创团购模式以其独特的魅力&#xff0c;正引领着中小型企业走向市场的新高地。这一模式巧妙融合了社交电商的精髓与拼购的乐趣&#xff0c;不仅加速了用户群体的指数级增长&#xff0c;还极大地提升了产品的市场渗透率与品牌影响力。同时&…

TQSDRPI开发板教程:单音回环测试

将我提供的启动文件复制到SD卡中&#xff0c;并插入开发板&#xff0c;插入串口线&#xff0c;启动模式设置为SD卡启动&#xff0c;开启开关。提供的文件在文章末尾。 ​ 查看串口输出内容 ​ 在串口输出的最后有写命令可以使用 ​ 在串口输入如下内容可以对输出的信号进…

计算机毕业设计选题推荐-游戏比赛网上售票系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

二叉树的分层遍历、栈的压入弹出序列

本章主要来讲解两个OJ题&#xff0c;针对每个OJ题我分三部分来解决&#xff0c;分别是题目解析&#xff08;主要弄清楚题目要求我们解决什么问题&#xff09;&#xff0c;算法原理&#xff0c;代码编写&#xff0c;接下来让我们进入正题。 一、二叉树的分层遍历 1.题目解析 题…

VSCODE 使用正则表达式匹配替换有规律的行

需求描述 我有类似的文本 count count_l24 count_l32 count count count我需要逐行替换l24,l32所在行&#xff0c;其他行保留。 步骤 替换的时候找到正则表达式的选项 输入: ^._l.$ 替换为空行就行.

攻防世界-web题型-7星难度汇总-个人wp

Web_php_wrong_nginx_config 这个题目nginx配置错误 随便输入显示网站还没建设好。。。 先信息收集一下 换了个无敌好看的终端 没想到7星了还玩这些。。。 看了admin的页面需要先登录 现在的问题是如果读取到这个文件 这个hack的文件也没有东西 到此就不知道了&#xff0…

【二叉树---堆的C语言实现】

1.树的概念与结构 树是一种非线性的数据结构&#xff0c;它n&#xff08;N>0&#xff09;个有限节点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂着的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有一个特殊的节点&#xff0c;称为根节…

【基础算法】位运算

位运算 概念位运算模板模板题 概念 异或&#xff08;x⊕y或x ^ y&#xff09; 高低位交换:https://www.luogu.com.cn/problem/P1100 题意&#xff1a;给定一个32 3232位整数x xx&#xff0c;在二进制下交换其前16 1616位与后16 1616位&#xff0c;输出最终的数。 答案为ans (…

JVM系列--垃圾回收

在C/C这类没有自动垃圾回收机制的语言中&#xff0c;一个对象如果不再使用&#xff0c;需要手动释放&#xff0c;否则就会出现内存泄漏。内存泄漏指的是不再使用的对象在系统中未被回收&#xff0c;内存泄漏的积累可能会导致内存溢出。 在这段代码中&#xff0c;通过死循环不停…