四十六——

news2025/4/12 3:11:28

四十六、JavaScript——对象

一、对象

  • 数据类型:

                原始值

                    1. 数值  Number

                    2. 大整数 BigInt

                    3. 字符串 String

                    4. 布尔值 Boolean

                    5. 空值 Null

                    6. 未定义 Undefinded

                    7. 符号 Symbol

            除了七种原始值之外,后面所用到的数据类型,都统称为对象


 

  • 原始值只能用来表示一些简单数据,如性别,年龄,不能表示复杂数据

  • 对象         

                - 对象是JS中一种复合数据类型

                    它相当于一个容器,在对象中可以存储不同的类型数据,

                        例如对象中可以存储人的姓名、身高、年龄

  • 对象中可以存储多个各种类型的数据
  1. 对象中存储的数值,我们称之为属性
  2. 创建一个对象(new可省略)

                    let 对象名  = new Object

  3. 向对象中添加属性

                    对象.属性名 = 属性值

  4. 读取对象中的某个属性

                    对象.属性名

                        - 如果读取的是对象中没有的属性

                            不会报错而是报undefinded

  5. 修改对象中的某个属性:命名新的,会产生覆盖

                    对象.属性名 = 新的属性值

  6. 删除属性

                    delete 对象.属性名                      

 

 <script>
        /*
            数据类型:
                原始值:
                    1. 数值  Number
                    2. 大整数 BigInt
                    3. 字符串 String
                    4. 布尔值 Boolean
                    5. 空值 Null
                    6. 未定义 Undefinded
                    7. 符号 Symbol

            除了七种原始值之外,后面所用到的数据类型,都统称为对象


            原始值只能用来表示一些简单数据,如性别,年龄,不能表示复杂数据

            对象
                - 对象事JS中一种复合数据类型
                    它相当于一个容器,在对象中可以存储不同的类型数据,
                        例如对象中可以存储人的姓名、身高、年龄
        
        */

    

        /*
            对象中可以存储多个各种类型的数据
                对象中存储的数值,我们称之为属性

            创建一个对象(new可省略)
                let 对象名  = new Object

            向对象中添加属性
                对象.属性名 = 属性值


            读取对象中的某个属性
                对象.属性名
                    - 如果读取的是对象中没有的属性
                        不会报错而是报undefinded

            修改对象中的某个属性:命名新的,会产生覆盖
                对象.属性名 = 新的属性值
            
            删除属性
                delete 对象.属性名
            
        */

            // 创建对象
        let obj = new Object()

        obj.name = "张三"
        obj.age = 10
        obj.gender = "男"

        console.log(obj)

        //读取对象中的某个属性
        console.log(obj.name)

        //修改属性
        obj.name = "李四"

        //删除属性
        delete obj.name

        console.log(obj.name)


    </script>

 四十七、JavaScript——对象的属性

一、属性

  • let 属性名 = new Object()

            属性名  

                - 通常属性名就是一个字符串,所以属性名可以实任何值,没有什么特殊要求

                    但是如果取得名字太特殊了,不能直接使用,需要用[]来包裹

                    虽然如此,但是我们还是强烈建议属性名也按照标识符规范命名

               

  • 也可以使用符号(symbol)作为属性名,来添加属性

                    获取这种属性时,也必须使用Symbol

                - 使用Symbol添加的属性,通常是那些不希望呗外界访问的属性

  • - 使用[]去操作属性时,可以使用变量,中括号中的变量不需要添加引号

  • 使用typeof检查一个对象时,返回object

  • in 运算符

                    - 用来检测对象中是否含有某个属性

                    - 语法 属性名 in 对象名

                    - 如果有返回true,没有返回false

 

  • 使用符号(symbol)作为属性名,来添加属性

                    获取这种属性时,也必须使用Symbol

                - 使用Symbol添加的属性,通常是那些不希望呗外界访问的属性

 

<script>

        /*
            let 属性名 = new Object()

            属性名  
                - 通常属性名就是一个字符串,所以属性名可以实任何值,没有什么特殊要求
                    但是如果取得名字太特殊了,不能直接使用,需要用[]来包裹
                    虽然如此,但是我们还是强烈建议属性名也按照标识符规范命名

                
                - 也可以使用符号(symbol)作为属性名,来添加属性
                    获取这种属性时,也必须使用Symbol
                - 使用Symbol添加的属性,通常是那些不希望呗外界访问的属性

        */

       let obj = new Object()

       console.log(obj)

       //使用symbol作为属性名,得到Symbol对象
       let mySymbol = Symbol()

       //使用symbol作为属性名
       obj[mySymbol] = "通过symbol添加的属性"

       console.log(obj[mySymbol])



    </script>
  • - 使用[]去操作属性时,可以使用变量,中括号中的变量不需要添加引号 

 

 

<script>

        /*
            let 属性名 = new Object()

            属性名  
                - 通常属性名就是一个字符串,所以属性名可以实任何值,没有什么特殊要求
                    但是如果取得名字太特殊了,不能直接使用,需要用[]来包裹
                    虽然如此,但是我们还是强烈建议属性名也按照标识符规范命名

                
                - 也可以使用符号(symbol)作为属性名,来添加属性
                    获取这种属性时,也必须使用Symbol
                - 使用Symbol添加的属性,通常是那些不希望呗外界访问的属性

                - 使用[]去操作属性时,可以使用变量,中括号中的变量不需要添加引号

            属性值
                - 对象的属性值可以是任意得而数据类型,也可以是一个对象

        */

    //    let obj = new Object()

    //    console.log(obj)

    //    //使用symbol作为属性名,得到Symbol对象
    //    let mySymbol = Symbol()

    //    //使用symbol作为属性名
    //    obj[mySymbol] = "通过symbol添加的属性"

    //    console.log(obj[mySymbol])

    
    let obj = new Object()

    let str = "address"

    obj[str] = "南京"

    console.log(obj)

    </script>
  • in 运算符

                - 用来检测对象中是否含有某个属性

                - 语法 属性名 in 对象名

                - 如果有返回true,没有返回false

 

 console.log("name" in obj)

 四十八、JavaScript——对象的字面量

一、字面量{}

  •    对象字面量
  1.  可以使用{} 来创建对象
  2. 使用{}创建对象,可以直接向属性中添加对象
  3. 语法:

                    {

                        属性名:属性值,

                        ["属性名"]: 属性值,

                    }

  •  关于["属性名"]: 属性值,  中属性值是否要带双引号
  • 如果是直接命名的属性值,则需要带双引号,例如属性名为["age"]: 属性值
  • 而像引用创建好的对象时,不用双引号              

                 //使用symbol作为属性名,得到Symbol对象
                       let mySymbol = Symbol()

               //使用symbol作为属性名
                       obj[mySymbol] = "通过symbol添加的属性"

 

 


    <script>

    /*

        对象字面量
            - 可以使用{} 来创建对象
                语法:let 属性名 = {}
            - 使用{}创建对象,可以直接向属性中添加对象
            - 语法:
                {
                    属性名:属性值,
                    ["属性名"]: 属性值,
                }

    */



    //使用{} 来创建对象
    let objs = {}

    //使用{}创建对象,可以直接向属性中添加对象
    let objec = {
        name: "张三",

        ["age"]: 18,
    }

    console.log(objec)

    </script>

四十九、JavaScript——枚举对象中的属性

一、枚举属性

  • 枚举属性:将对象中属性全部获取

            for-in语句

            - 语法

                for(let propName in 对象){

                    语句。。。

                    console.log(proName,obj[proName])

                    console.log(属性名,属性值)

                }

            - for-in的循环体会执行多次,有几个属性会执行几次

                每次执行时都会将一个属性名赋值给我们定义的变量

  •  注意:

                - 并不是所有的属性都可以枚举,比如:使用符号添加的属性不能枚举[Symbol()]

 

 

 

  <script>
        /*
            枚举属性:将对象中属性全部获取

            for-in语句
            - 语法
                for(let propName in 对象){
                    语句。。。

                    console.log(proName,obj[proName])
                    console.log(属性名,属性值)
                }

            - for-in的循环体会执行多次,有几个属性会执行几次
                每次执行时都会将一个属性名赋值给我们定义的变量

            注意:
                - 并不是所有的属性都可以枚举,比如:使用符号添加的属性不能枚举[Symbol()]



        */

        let obj = {
            name: "张三",
            age: 11,
            gender: "男",
           // [Symbol()]:"测试的属性" //符号添加的属性不能枚举

        }

        for(let propName in obj){

            //枚举属性名,属性值
            console.log(propName,obj[propName])
        }

    </script>

五十、JavaScript——可变类型

一、可变类型

  • 定义:可变类型值指的是对象中的属性名和属性值是可以改变的

  • 在创建对象时,对象的属性和属性值在内存中也相当于一个表格的映射关系,而真正的属性值也是由内存中开辟一个空间来存储,而表格中存储的是内存地址

  • 原始值都属于不可变类型,一旦创建无法修改

            在内存中,不会重复创建重复的原始值

  • 对象属于可变类型

                    - 变量和内存中存的都是内存地址

                    - 可变类型值指的是对象中的属性名和属性值是可以改变的

                注意

                    - 如果两个变量指向同时指向同一个对象

                        通过一个变量修改对象时,另一个对象也会发生改变(内存地址发生改变)

                    

  • 当对两个对象进行相等或者全等的比较时,比较的是内存地址,

  • 当修改一个对象时,所有指向该对象的变量都会发生改变

  • 当对两个对象进行相等或者全等的比较时,比较的是内存地址 

 

 

   <script>
        /*
            原始值都属于不可变类型,一旦创建无法修改
            在内存中,不会重复创建重复的原始值


            

        */

    
        /*
            对象属于可变类型
                - 变量和内存中存的都是内存地址
                - 可变类型值指的是对象中的属性名和属性值是可以改变的
            注意:
                - 如果两个变量指向同时指向同一个对象
                    通过一个变量修改对象时,另一个对象也会发生改变(内存地址发生改变)

                - 当对两个对象进行相等或者全等的比较时,比较的是内存地址,
        */

        let obj = new Object()

        obj.name = "张三"

        let obj2 = new Object()



        let obj3 = new Object()

        console.log(obj2 === obj3)

    </script>

五十一、JavaScript——变量和对象

一、变量和对象

修改对象

                - 修改对象时,如果有其他变量指向该对象

                    则所有指向对象的变量会受到影响

           

            修改变量

                - 修改变量,只会影响当前的变量

           

            在使用变量存储对象时,很容易因为改变变量指向的对象,提高代码的复杂度

                所以通常情况下,声明存储对象的变量会使用const

            注意:  

                const只是禁止变量赋值,禁止改变量,而修改对象时允许的

                因为是const obj 所以obj的变量名和地址是固定的 额不可修改的

<script>

        /*
            修改对象
                - 修改对象时,如果有其他变量指向该对象
                    则所有指向对象的变量会受到影响
            
            修改变量
                - 修改变量,只会影响当前的变量
            
            在使用变量存储对象时,很容易因为改变变量指向的对象,提高代码的复杂度
                所以通常情况下,声明存储对象的变量会使用const

            注意:  
                const只是禁止变量赋值,禁止改变量,而修改对象时允许的
                因为是const obj 所以obj的变量名和地址是固定的 额不可修改的
            
            
        */

        let obj = {
            name:"张三",

        }

        let obj2 = obj

        obj2.name = "李四"  // 修改对象
        
        obj = { }  //修改变量。创建了一个新的对象






    </script>

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

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

相关文章

jsp+ssm计算机毕业设计茶园文化交流平台论文【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

jsp+ssm计算机毕业设计超市收银系统论文【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

【LeetCode101. 对称二叉树】—— 二叉树遍历

101. 对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&#xff1a; …

【探索Spring底层】12.谈谈代理创建器与代理创建时机

文章目录1. 前言2. 谈谈代理创建器3. 代理创建时机是什么时候4. 浅谈Order的失效场景4. 浅谈Order的失效场景5. 高级切面如何转为低级切面1. 前言 Spring中有两种切面&#xff0c;一种是Aspect&#xff0c;另一种是Advisor 其中Aspect是高级切面&#xff0c;Advisor是低级切面…

【网站架构】网站系统怎么才是安全的?安全验收?等保、网络安全、SQL盲注、https、鉴权

大家好&#xff0c;欢迎来到停止重构的频道。 本期我们讨论网站系统的安全性。 安全的重要性不言而喻&#xff0c;大部分安全问题确实是安全扫描后根据指引修改就可以了。 但是仍有一些问题修改起来是特别麻烦的&#xff0c;这些问题会严重影响上线时间。 本期我们的重点不…

共享购模式简单又好玩,撑起市场的半边天,推动实体产业改造上级

在2022年1月18日&#xff0c;国家发展改革委等七部局下发《促进消费实施方案》的通知&#xff0c;确立了”消费送积分”的新形式。该政策的出台&#xff0c;表明了政府探索实施全国绿色消费积分制度&#xff0c;鼓励地方结合实际建立本地绿色消费积分制度&#xff0c;以兑换商品…

S3 Drive支持以及FIPS 140-2兼容性

S3 Drive支持以及FIPS 140-2兼容性 在Windows Arm64上运行-添加了在Microsoft Windows for Arm64上的功能。无需额外下载&#xff0c;安装程序将为您的系统选择正确的驱动程序和库。 现在符合FIPS 140-2。 现在&#xff0c;您可以使用新的CacheOnlyFiles设置阻止上载临时(或其他…

基于高分辨率时频分析的单通道地震数据自动噪声衰减方法(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 记录的地震信号常常被噪声破坏。本文使用了一种基于高分辨率时频分析的单通道地震数据自动噪声衰减方法。同步压缩是一种时频重…

MySQL——保证主从一致

binlog 可以用来归档&#xff0c;也可以用来做主备同步&#xff0c;备库执行了 binlog 就可以跟主库保持一致。 MySQL 主备的基本原理 如图 1 所示就是基本的主备切换流程。 在状态 1 中&#xff0c;客户端的读写都直接访问节点 A&#xff0c;而节点 B 是 A 的备库&#xff…

Java安全--CC4

CC4 环境提一小嘴&#xff1a; CC4利用的是commons-collections4&#xff0c;所以我们需要导入新的依赖&#xff0c;地址&#xff1a;https://mvnrepository.com/artifact/org.apache.commons/commons-collections4/4.0 我们先来关注一下利用链&#xff1a; 后半段是一样的&am…

本地运行好好的 Java 程序, 一发布到线上就报错的灵异事件终于让我碰到了

说明 本文涉及的相关软件版本如下&#xff1a; mybatis 3.4.xHotSpot JDK1.8Windows 11IDEA 2022.3 先看一段 mybatis 相关的代码 今天一个朋友丢给我如下一段代码&#xff1a; 然后跟我讲为什么本地是好好的&#xff0c; 发布到线上执行就报错。 BlogMapper.java public…

【python机器学习】K-Means算法详解及给坐标点聚类实战(附源码和数据集 超详细)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 人们在面对大量未知事物时&#xff0c;往往会采取分而治之的策略&#xff0c;即先将事物按照相似性分成多个组&#xff0c;然后按组对事物进行处理。机器学习里的聚类就是用来完成对事物进行分组的任务 一、样本处理 聚类…

技术原理|Hologres Binlog技术原理揭秘

作者&#xff1a;张高迪&#xff08;花名杳天&#xff09;&#xff0c;Hologres研发。 同传统MySQL数据库&#xff0c;Hologres支持Hologres binlog&#xff0c;记录数据库中所有数据的变化事件日志。通过Hologres binlog&#xff0c;可以非常方便灵活的实现数据之间的复制、同…

“电池黑马”瑞浦兰钧增速惊人,动储双起飞

撰稿 | 多客 来源 | 贝多财经 12月14日&#xff0c;“电池黑马”瑞浦兰钧能源股份有限公司&#xff08;以下简称“瑞浦兰钧”&#xff09;向港交所主板提交上市申请&#xff0c;摩根士丹利和中信证券为其联席保荐人。至此&#xff0c;国内动力电池装机量排名前十的企业均已上…

DB Optimizer Multiplatform SQL评测和调优IDE

DB Optimizer Multiplatform SQL评测和调优IDE 增加了对最新版本Log4j的支持。 改进了分析会话功能&#xff0c;可提前提醒用户可能有问题的SQL。 DB Optimizer可以快速发现、诊断和优化性能较差的SQL。DBOptimizer使DBA和开发人员能够在整个开发生命周期中优化SQL性能&#xf…

合并多个有序数组

合并多个有序数组题目描述思想代码实现变形题目题目描述 我们现在有多个已经有序的数组&#xff0c;我们知道每个有序数组的元素个数和总共的有序数组的个数&#xff0c;现在请设计一个算法来实现这多个有序数组的合并&#xff08;合并成一个数组&#xff09;; 例如&#xff1a…

Chrome浏览器可以用ChatGPT了?

程序员宝藏库&#xff1a;https://gitee.com/sharetech_lee/CS-Books-Store 最近这段时间想必 和我一样&#xff0c;都被chatGPT刷屏了。 在看到网上给出的一系列chatGPT回答问题的例子和自己亲自体验之后&#xff0c;的确发现它效果非常令人惊艳。 chatGPT的火热程度在开源社…

turbo编码原理

一、原理 Turbo的编码器由两个并行的分量编码器组成。分量编码器的选择一般是卷积码。在Turbo码中&#xff0c;输入序列在进入第二个编码器时须经过一个交织器 &#xff0c;用于将序列打乱。两个编码器的输出共同作为冗余信息添加到信息序列之后&#xff0c;对抗信道引起的错误…

实战SupersetBI报表之数据集图表配置

上集已经安装完Superset -实战SupersetBI报表之安装 本集开始讲解 根据数据集配置图表&#xff1a;以简单的员工花名册 为例 1、首先配置数据库 上次安装的时候也提到过 如果服务之间都是docker 安装。必须保证能够通信 下面根据实际参数配置即可 当我们配置好数据库之后 就可以…

如何保证TCP传输的可靠性

重传机制&#xff0c;流量控制&#xff0c;拥塞控制 1.重传机制&#xff1a; 序列号确认应答 当发送端的数据到达接收主机的时候&#xff0c;接收端主机会返回一个确认应答消息&#xff0c;表示已经收到消息 当数据发生丢包时&#xff0c;用重传机制解决 重传机制有好几种…