【JavaScript】4.JavaScript对象

news2024/11/16 11:54:15

JavaScript 对象

1. 对象

在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等

  • 对象是由属性和方法组成的。
    • 属性:事物的特征,在对象中用属性来表示(常用名词)
    • 方法:事物的行为,在对象中用方法来表示(常用动词)

2. 创建对象的三种方式

  • 利用字面量创建对象

  • 利用 new Object 创建对象

  • 利用构造函数创建对象

2.1 利用字面量创建对象

属性或者方法 采取 键值对 的形式 键 属性名 : 值 属性值

  • 对象的调用
    • 对象里面的属性调用 : 对象.属性名
    • 对象里面属性的另一种调用方式 : 对象[‘属性名’]
    • 对象里面的方法调用:对象.方法名()
<!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>
    <script>
        // 利用对象字面量创建对象 {}
        // var obj = {};  // 创建了一个空的对象 
        var obj = {
            uname: 'ich',
            age: 18,
            sex: '男',
            sayHi: function () {
                console.log('hi~');
            }
        }
        // 对象的调用
        // 对象名.属性名
        console.log(obj.uname);
        // 对象名['属性名']
        console.log(obj['age']);
        // 调用对象的方法 对象名.方法名()
        obj.sayHi();
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

2.2 练习:创建一个名字为可可的狗对象

<!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>
    <script>
        var keke = {
            name: '可可',
            type: '阿拉斯加犬',
            age: 5,
            color: '棕红色',
            bark: function () {
                console.log('它会汪汪汪')
            },
            showFilm: function () {
                console.log('它会演电影');
            }
        }
        console.log(keke.name + '是' + keke.type + ',今年' + keke.age + '岁,' + '它是' + keke.color);
        keke.bark();
        keke.showFilm();
    </script>
</head>

<body>
    <!-- 请用对象字面量的形式创建一个名字为可可的狗对象 -->
    <!-- 
        姓名:可可 
        类型(type):阿拉斯加犬
        年龄:5岁,
        颜色:棕红色。  
        技能:汪汪汪(bark) ,演电影 (showFilm)
     -->
</body>

</html>

在这里插入图片描述

2.3 利用 new Object 创建对象

Object() :第一个字母大写
new Object() :需要 new 关键字
使用的格式:对象.属性 = 值;

<!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>利用 new Object 创建对象</title>
    <script>
        // 利用 new Object 创建对象
        var obj = new Object(); // 创建了一个空的对象
        obj.name = 'ich';
        obj.age = 18;
        obj.sex = '男';
        obj.sayHi = function () {
            console.log('hi~');

        }
        // 利用 等号 = 赋值的方法 添加对象的属性和方法
        // 每个属性和方法之间用 分号结束
        console.log(obj.name);
        console.log(obj['sex']);
        obj.sayHi();
    </script>
</head>

<body>

</body>

</html>

2.4 请用new Object 形式创建一个鸣人对象

<!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>请用new Object 形式创建一个鸣人对象</title>
    <script>
        var mingren = new Object();
        mingren.name = '鸣人';
        mingren.sex = '男';
        mingren.age = '19';
        mingren.skill = '影分身术';

        console.log(mingren.name + '是' + mingren.sex + '的,今年' + mingren.age + '岁,' + '他会' + mingren.skill);
    </script>
</head>

<body>
    <!-- 请用new Object 形式创建一个鸣人对象 -->
    <!-- 
        姓名:鸣人  
        性别:男 
        年龄:19岁  
        技能(skill):影分身术
     -->
</body>

</html>

在这里插入图片描述

2.5 为什么需要使用构造函数

构造函数 :
是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 运算符一起使用
可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面

<!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>
    <script>
        // 为什么需要使用构造函数
        // 就是因利用 字面量 和 new Object 创建对象的方式一次只能创建一个对象
        var ldh = {
            uname: '刘德华',
            age: 55,
            sing: function () {
                console.log('冰雨');

            }
        }
        var zxy = {
            uname: '张学友',
            age: 58,
            sing: function () {
                console.log('李香兰');

            }
        }
        // 因为一次创建一个对象,里面很多的属性和方法是大量相同的 只能复制
        // 因此可以利用函数的方法 重复这些相同的代码 就把这个函数称为 构造函数
        // 又因为这个函数不一样,里面封装的不是普通代码,而是 对象
        // 构造函数 就是把对象里面一些相同的属性和方法抽象出来封装到函数里面
    </script>
</head>

<body>

</body>

</html>

2.6 利用构造函数创建对象

  • 注意
    • 构造函数约定首字母大写
    • 函数内的属性和方法前面需要添加 this ,表示当前对象的属性和方法
    • 构造函数中不需要 return 返回结果
    • 当创建对象的时候,必须用 new 来调用构造函数
// 构造函数的语法格式
function 构造函数名() {
    this.属性 =;
    this.方法 = function() {}
}
<!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>
    <script>
        // 利用构造函数创建对象
        // new 构造函数名();
        function Star(uname, age, sex) { //构造函数名字首字母要大写
            // 属性和方法前面必须添加 this
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function (sang) {
                console.log(sang);
            }
            // 构造函数不需要return 就可以返回结果
        }

        // 调用构造函数 必须使用 new
        // new Star() 调用函数就创建一个对象 ldh {}
        var ldh = new Star('刘德华', 18, '男'); // 调用函数返回的是一个对象
        console.log(typeof ldh);
        console.log(ldh.name);
        console.log(ldh['sex']);
        ldh.sing('冰雨');

        var zxy = new Star('张学友', 19, '男');
        console.log(typeof zxy);
        console.log(zxy.name);
        console.log(zxy.age);
        zxy.sing('李香兰')
    </script>
</head>

<body>

</body>

</html>

2.7 利用构造函数创建两个英雄对象

<!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>
    <script>
        function Hero(name, type, blood, attack) {
            this.name = name;
            this.type = type;
            this.blood = blood;
            this.attack = attack;
            this.newHero = function () {
                console.log(this.name + ' 是 ' + this.type + '英雄,血量 ' + this.blood + ',属于' + this.attack + '攻击');
            }
        }

        var lp = new Hero('廉颇', '力量型', 500, '近战');
        var hy = new Hero('后羿', '射手型', 100, '远程');
        lp.newHero();
        hy.newHero();
    </script>
</head>

<body>
    <!-- 利用构造函数创建两个英雄对象 -->
    <!-- 
        函数中的公共部分包括:
            姓名属性(name)
            类型属性(type)
            血量属性(blood)
            攻击方式(attack) 
    -->
    <!-- 
        廉颇   力量型    500血量    攻击:近战
        后羿   射手型    100血量    攻击:远程
     -->
</body>

</html>

3. new关键字

<!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>new关键字执行过程</title>
    <script>
        // new关键字执行过程
        // 1. new 构造函数可以在内存中创建了一个空的对象 
        // 2. this 就会指向刚才创建的空对象
        // 3. 执行构造函数里面的代码 给这个空对象添加属性和方法
        // 4. 返回这个对象
        function Star(uname, age, sex) {
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function(sang) {
                console.log(sang);

            }
        }
        var ldh = new Star('ich', 18, '男');
    </script>
</head>

<body>

</body>

</html>

4. 遍历对象属性

<!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>
    <script>
        // 遍历对象 
        var obj = {
            name: 'ich',
            age: 18,
            sex: '男',
            fn: function () { }
        }
        // console.log(obj.name);
        // console.log(obj.age);
        // console.log(obj.sex);

        // for in 遍历对象
        // for (变量 in 对象) {}
        for (var k in obj) {
            console.log(k); // k 变量 输出  得到的是 属性名
            console.log(obj[k]); // obj[k] 得到是 属性值
        }

        for (var key in obj) {
            console.log(key + ' : ' + obj[key]);
        }
        // 使用 for in 里面的变量 我们喜欢写 k  或者  key
    </script>
</head>

<body>

</body>

</html>

GitHub代码
gitee代码

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

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

相关文章

浅谈兼容性测试

兼容性测试的概念 兼容性测试是一种软件测试&#xff0c;用于确保构建的系统/应用程序/网站与其他各种对象&#xff08;如其他网络浏览器、硬件平台、用户、操作系统等&#xff09;的兼容性。这种类型的测试有助于了解产品在特定环境中的表现。 为了方便理解&#xff0c;可以…

java String 和ArrayList转换 换化

[Ljava.lang.String; cannot be cast to java.util.List 原因&#xff1a; Map<String, Object> parameters (Map<String, Object>) jsonResult.getData(); parameters 参数中refrenceIds 是个string &#xff08;比如&#xff1a;"refrenceIds": [&…

媒体查询神器:掌握 CSS3 变革性技术

媒体查询是 CSS3 中的一项重要功能&#xff0c;它使得我们可以针对不同设备和屏幕尺寸应用不同的样式。本文将深入介绍媒体查询的使用方法&#xff0c;以及如何利用媒体查询优化响应式设计。 什么是媒体查询&#xff1f; 媒体查询是 CSS3 的一项新特性&#xff0c;允许我们根据…

聚类算法:Kmeans和Kmeans++算法精讲

前言 其实Kmesns聚类算法在YOLOv2&#xff08;【YOLO系列】YOLOv2论文超详细解读&#xff08;翻译 &#xff0b;学习笔记&#xff09;&#xff09;中我们就见到了&#xff0c;那时候只是简单地了解了一下。后来在这学期的数据挖掘课程的期末汇报中&#xff0c;我又抽中了这个算…

1 分钟给 Siri 升个级!从智Z变身 ChatSiri!

原文链接&#xff1a;https://forum.laf.run/d/79/17 众所周知&#xff0c;Siri 是一个智 Z&#xff01;那么如果能接入大火的 chatGPT&#xff0c;是不是就会从智 Z 变成人工智能&#xff1f;&#xff01; 众所周知&#xff0c;Laf 是一个集函数、数据库、存储为一体的云开发…

opencv-LSD线特征库文件

OpenCv-LSD线特征库使用 下载线特征库文件在工程源码中引入线特征头文件 下载线特征库文件 下面是阿里云盘链接 https://www.aliyundrive.com/s/rPxrmusTNPM 我们需要删掉build文件夹&#xff0c;并重新创建build文件夹。 并在build文件夹打开终端执行以下命令&#xff1a; …

Redis高可用之哨兵挂了,主从库还能切换吗

通过部署多个实例&#xff0c;就形成了一个哨兵集群&#xff0c;哨兵集群中的多个实例共同判断&#xff0c;可以降低对主库下线的误判率。 考虑一个问题&#xff1a;如果有哨兵实例在运行时发生了故障&#xff0c;主从库还能正常切换吗&#xff1f; 实际上&#xff0c;一旦多…

【Java 数据结构】二叉树的经典面试题 (图解)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

【力扣-206】反转链表

&#x1f58a;作者 : Djx_hmbb &#x1f4d8;专栏 : 数据结构 &#x1f606;今日分享 : ----------“覆蕉寻鹿”: 有的人把假的当成真的&#xff0c;而又有人把明明是真的事情当成假的&#xff0c;前者可以说是“黄粱美梦”&#xff0c;后面这种就是“覆蕉寻鹿”。以前有个樵夫…

清理C盘的几种方法,帮你解决C盘爆红的烦恼

目录 C盘空间不足的原因&#xff1a; 清理方法 一、利用Windows自己附带的磁盘清理工具 二、存储设置清理 三、开启自动清理 四、将系统文件夹进行转移 五、清理系统缓存 六、利用清理软件进行清理 C盘空间不足的原因&#xff1a; 我们使用电脑时&#xff0c;c盘总是不知不觉…

K_A32_002 基于STM32等单片机驱动红外接收模块 串口+OLED0.96显示

K_A32_002 基于STM32等单片机驱动红外接收模块 串口OLED0.96显示 所有资源导航一、资源说明二、基本参数参数引脚说明 三、驱动说明时序:对应程序: 四、部分代码说明1、接线引脚定义1.1、STC89C52RC红外接收模块1.2、STM32F103C8T6红外接收模块 五、基础知识学习与相关资料下载…

软件测试工程师四大项目实战,再也不怕简历没项目写了

目录 1、宠明app 测试工程师 个人职责 2、薪时贷 测试工程师 个人职责 3、花花直播 测前端开房间内软件 个人职责 4、全本小说app 测试工程师 个人职责 5、总结 1、宠明app 测试工程师 宠明APP由APP用户前端和Web后台管理端组成。前端面向用户提供多功能宠物生活管理&am…

卷积神经网络分类算法的模型训练

模型训练 卷积神经网络分类算法的模型训练模型创建与编译模型训练及保存模型保存模型生成图像预处理 卷积神经网络分类算法的模型训练 启动Web服务器、应用使用说明和测试结果示例。 模型创建与编译 原VGG-16模型要求输入2242243的图片&#xff0c;限于GPU的计算能力&#x…

在线题库整理及一些刷题注意事项

在线题库整理及一些刷题注意事项 刷题站CSDN编程语言支持 LeetCode编程语言支持数据库语言支持 牛客网编程语言支持数据库语言支持 洛谷编程语言支持 AcWing编程语言支持 蓝桥编程语言支持 做题的两种模式调用模式委托模式 注意事项小结 刷题站 老顾一个人单打独斗太久了&…

ch05-学习率调整策略、可视化与Hook

ch05-学习率调整策略、可视化与Hook 0.引言1.学习率调整策略1.1.为什么要调整学习率&#xff1f;1.2.Pytorch提供的六种学习率调整策略1.3.学习率调整策略总结 2.TensorBoard 介绍1.1.SummaryWriter1.2.add_scalar1.3.add_scalars1.4.add_histogram1.5.模型指标监控1.6.add_ima…

Node【八】Express框架【二】

文章目录 &#x1f31f;前言&#x1f31f;中间件&#x1f31f;中间件函数&#x1f31f;什么是中间件函数&#x1f31f;中间件函数可以做什么 &#x1f31f;Express中间件的类型&#x1f31f;应用级中间件&#x1f31f;路由器级中间件&#x1f31f;错误处理中间件&#x1f31f;内…

Pycharm设置.py文件模版和设置活动模版(代码自动补全)

一、设置.py文件模版 有时候我们想新建.py文件的时候&#xff0c;让这个文件里面默认有一些内容&#xff0c;比如utf-8编码修改&#xff0c;我们应该怎么在PyCharm中设置呢&#xff1f; 依次点击 File -> Settings -> Editor -> File and Code Template&#xff0c;进…

基于亚马逊云科技无服务器架构,开发者可以有效实现快速上线

开发一个“爆款”游戏总共需要几步&#xff1f;Marvel Snap可能会告诉你&#xff1a;第一步&#xff0c;专心致志把游戏做好、提高可玩性&#xff1b;第二步&#xff0c;把其他工作交给亚马逊云科技。 相关数据显示&#xff0c;自2022年10月18日正式发行以来&#xff0c;在不到…

Vue 条件语句

文章目录 Vue 条件语句条件判断v-ifv-elsev-else-ifv-show Vue 条件语句 条件判断 v-if 条件判断使用 v-if 指令&#xff1a; v-if 指令 在元素 和 template 中使用 v-if 指令&#xff1a; <div id"app"><p v-if"seen">现在你看到我了<…

Stereo-Detection:适合新手的双目测距开源项目

简介&#xff1a;Stereo-Detection 是一个传统的SGBM深度测距yolov5目标检测&#xff0c;并部署在Jeston nano的开源教程。它致力于让更多的大四学生毕业&#xff0c;以及让研一学生入门 开源链接&#xff1a;yzfzzz/Stereo-Detection: Conventional SGBM depth ranging yolov…