(day 13)JavaScript学习笔记(对象1)

概述

        这是我的学习笔记,记录了JavaScript的学习过程。在写博客的时候我会尽量详尽的记录每个知识点。如果你完全没接触过JavaScript,那么这一系列的学习笔记可能会对你有所帮助。

        今天学习对象,主要是创建对象、对象属性、省略key、遍历对象属性、删除对象属性、构造函数等。

1.创建对象

        对象是拥有属性和方法的数据集合,它们以“key: value”对的形式出现,表示相关的无序数据。这些属性可以包含基本值、对象或函数,而方法则是对象上执行特定任务的函数。

        在JavaScript中对象的创建方式有多种,最直观的是用字面值来创建,也就是对象的初始化器,它的基本语法结构是:

对象名 = {key1: “value1”,key2: “value2”,……}

        下面是JavaScript用字面值创建对象的代码示例:

var stu = {
  name: "小红",
  age: 18,
  id: 20240001,
  nativePlace: "天津市",
  attendClass: function () {
    console.log(name + "上课");
  }
};

        从上面代码中我们可以看到,对象的键值对的值可以是字符串、数字、还可以是函数。从数据结构上看JavaScript中对象对象与Python中的字典类似,但是也有不同的地方,字典的键值对中的键需要加引号,Python字典中的值可以是函数,但是很少这样用。JavaScript中对象对象与Python中的字典也就看上取差不多,在其他方面都不相同,Python中字典的相关操作可详见本人之前的文章:

Python中字典的相关操作

         在JavaScript中创建对象还可以new object来创建,如下代码:

//用new object
var stu2 = new Object(); //先创建一个空对象
stu2.name = "小蓝";
stu2.age = 17;
stu2.id = 20210002;
stu2.nativePlace = "河北";
stu2.attendClass = function () {
  console.log("小蓝红上课");
};

        还有其他的方式创建对象,后面章节里再介绍。

2.对象属性

        对象里的键值对都是对象的属性,它跟变量一样,可以是任何值,比如数字、数组、字符串、对象、函数等等,如果属性的值是函数,又叫做方法。

        访问对象的属性值有两种方法,一种打点的方式,一种是方括号的形式,如下代码演示:

console.log(stu.name); //输出:小红
console.log(stu["name"]); //注意方括号中是字符串,输出:小红

        用如下代码可以更改属性的值:

//更改对象属性的值
stu.name = "大红"; //更改stu对象中属性name的值
console.log(stu.name); //输出:大红
stu["nativePlace"] = "北京市"; //更改stu对象中属性nativePlace的值
console.log(stu.nativePlace); //输出:北京市

         可以给对象添加新的属性,但是不能访问没有的属性,如下代码示例:

//给对象添加新的属性
stu.scoreChinese = 95; // 给对象stu添加scoreChinese属性并赋值为95
stu["scoreMath"] = 99; // 给对象stu添加scoreMath属性并赋值为99
console.log(stu.scoreChinese, stu.scoreMath); //输出:95 99

console.log(stu2.scoreChinese);//对象stu2中没有scoreChinese属性,输出:undefined

        注意:对象属性的key是不用加引号的,但是如果key中间有横杆,就必须加引号,并且访问的时候也只能用方括号的形式,如下代码示意:

//对象属性的key中有特殊字符,比如中划线时候是必须要加引号的,否则报错
var stu3 = {
  name: "小白",
  "birth-date": "2005-03-01",
};
console.log(stu3["birth-date"]);//访问时只能用方括号

         所以我们平时在写代码的时候尽量避免这种写法,命名的时候用驼峰命名法,如下:

var stu3 = {
  name: "小白",
  birthDate: "2005-03-01",
};
console.log(stu3.birthDate);

3.省略key

        用字面值定义对象的时候,如果对象属性的值是个变量,并且变量名与key相同,那么可以省略key,如下代码演示:

//以下是不省略key的写法
var name = "小黑";
var stu4 = {
  name: name,
};
console.log(stu4.name); //输出:小黑
//以下是省略key的写法
var name = "小黑";
var stu4 = {
  name,
};
console.log(stu4.name); //输出:小黑

        如果对象的属性值是函数,也可以省略key,把key的名字改成函数的名字,如下代码演示:

//属性值是函数,不省略key的写法
var stu7 = {
  attendClass: function () {
    console.log("小红上课");
  },
};
console.log(stu7.attendClass());
//属性值是函数,不省略key的写法
var stu8 = {
  attendClass() {
    console.log("小红上课");
  },
};
console.log(stu8.attendClass());

4.遍历对象属性

        遍历对象属性有两种方法, 第一种是用object.keys方法,如下代码演示:

var stu9 = {
  name: "小红",
  age: 18,
  id: 20240001,
  nativePlace: "天津市",
  attendClass() {
    console.log("小红上课");
  },
};
//用object.keys和object.values
console.log(Object.keys(stu9)); //输出:(5) ['name', 'age', 'id', 'nativePlace', 'attendClass']
console.log(Object.values(stu9));//输出:(5) ['小红', 18, 20240001, '天津市', ƒ]

         第二种方法是用for in 循环获取所有的key和vlue,如下代码演示:

//用for in循环获取所有的key
for (key in stu9) {
  console.log(key);
}

        运行结果如下:

name
age
id
nativePlace
attendClass

//用for in循环获取所有的vlue
for (key in stu9) {
  console.log(stu9[key]);
}

         运行结果如下:

小红
18
20240001
天津市
ƒ attendClass() {
    console.log("小红上课");
  }

 5.删除对象属性

        删除对象属性可以用delete关键字,如下代码演示:

//5.删除对象属性
var stu10 = {
  name: "小红",
  age: 18,
  id: 20240001,
  nativePlace: "天津市",
  attendClass() {
    console.log("小红上课");
  },
};

delete stu10.id;
console.log(stu10);
//运行结果:{name: '小红', age: 18, nativePlace: '天津市', attendClass: ƒ}

6.构造函数

        使用构造函数是另一个创建对象的方式,与上面介绍的两种创建对象的方式不同的是,使用构造函数可以预先定义好对象有哪些默认的属性,可以用new关键字来创建实例。如下代码演示:

//构造函数的名字一般首字母大写
function Student(name, id) {
  this.name = name;
  this.id = id;
}

//创建实例
var stu11 = new Student("小鹏", "202400007");
console.log(stu11); //输出:Student {name: '小鹏', id: '202400007'}

var stu12 = new Student("小白", "202400008");
console.log(stu12); //输出:Student {name: '小白', id: '202400008'}

 以上便是今天的学习内容,如果对你有所帮助,请点个赞再走吧。

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

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

相关文章

【Flask开发实战】配置python虚拟环境

python 虚拟环境是一种管理 Python 项目依赖的工具,它可以帮助你在不同的项目中使用不同的 Python 版本和库,避免了不同项目之间依赖冲突的问题。虚拟环境相当于一个抽屉,在这个抽屉中安装的任何软件包都不会影响到其他抽屉。并且在项目中&am…

线上教学平台|基于Spring Boot+ Mysql+Java+ B/S结构的线上教学平台设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

MapReduce框架原理

目录 前言一、InputFormat数据输入1.1 切片与MapTask并行度决定机制1.1.1 问题引出1.1.2 MapTask并行度决定机制1.1.3 数据切片与MapTask并行度决定机制 1.2 FileInputFormat切片机制1.2.1 切片大小参数配置1.2.2 切片机制 1.3 TextInputFormat1.3.1 FileInputFormat实现类1.3.…

ASPICE规范之系统追溯矩阵

系统追溯矩阵的需求来自 ISO26262 举例在描述系统追溯矩阵时:客户需求->系统需求;系统需求->客户需求;系统需求->软件需求;系统需求->硬件需求

Ollama 运行 Cohere 的 command-r 模型

Ollama 运行 Cohere 的 command-r 模型 0. 引言1. 安装 MSYS22. 安装 Golang3. Build Ollama4. 运行 command-r 0. 引言 Command-R Command-R 是一种大型语言模型,针对对话交互和长上下文任务进行了优化。它针对的是“可扩展”类别的模型,这些模型在高…

(简单成功)Mac:命令设置别名

案例:给"ls -l"命令,设置别名通过”ll“快速访问 1、在项目根目录底下查看有无.bash_profile文件,注意这个是个隐藏文件,需要使用ls -a命令查看: 没有.bash_profile新建一个文件, 在最后添加一行…

CMake笔记之GLOB和GLOB_RECURSE的使用方法

CMake笔记之GLOB和GLOB_RECURSE的使用方法 —— 杭州 2024-03-19 夜 文章目录 CMake笔记之GLOB和GLOB_RECURSE的使用方法1.GLOB使用方法2.GLOB对比GLOB_RECURSE 1.GLOB使用方法 在 CMake 中,file(GLOB ...) 命令用于将匹配特定模式的文件列表赋值给变量。这可以用…

HarmonyOS应用开发者高级认证答案

** HarmonyOS应用开发者高级认证 ** 以下是高级认证答案,存在个别选项随机顺序答案,自行辨别 判断题 云函数打包完成后,需要到 AppGallery Connect 创建对应函数的触发器才可以在端侧中调用 错 在 column 和 Row 容器组件中,a…

HighTec_TC4 编译器移植 Aurix ADS

ADS 是英飞凌推出的针对 AURIX 芯片的开发平台,该开发环境基于业内流行的 Eclipse 打造而成。 HighTec 作为英飞凌的全球重要合作伙伴和 PDH,作为专业的编译器供应商和嵌入式产品方案提供商,HighTec 早已经为英飞凌最新一代 AURIX TC4XX 芯片…

LeetCode每日一题 翻转二叉树(二叉树)

题目描述 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root [2,1,3] 输出:[2,3,1]示…

Vmware安装Kali

镜像下载地址:https://mirrors.tuna.tsinghua.edu.cn/kali-images/kali-2023.3/kali-linux-2023.3-installer-amd64.iso 新建虚拟机: 新建虚拟机--典型--稍后安装操作系统--Linux--Debian 10.X 64 位(因为kali是基于debian开发的&#xff0…

软件推动开放自动化落地

当你唯一拥有的是一把锤子时,你周围的一切都是钉子。 软件是硬件设备的护城河,国际自动化厂商不遗余力地开发各种新型工业软件,其战略站在应用的制高点。以前我们追求硬件兼容,现在我们要致力于应用引领。如果我们拥有强大的SCADA…

基于python高校选课系统设计与实现flask-django-nodejs-php

随着互联网技术的不断发展,高校选课系统的建设和应用已成为当前高校教育改革的重要方向。选课系统作为高校教务管理的重要组成部分,对于提高教学质量、提高学生的学习效率、优化教学资源配置具有重要的意义。本论文旨在探讨高校选课系统的设计与实现。随…

跨越文化鸿沟:AI在全球化语境中的挑战与机遇

在全球化的今天,人工智能(AI)技术已经渗透到我们生活的方方面面,尤其是在语言翻译和文化交流方面发挥着重要作用。AI翻译工具和服务使得不同语言背景的人们能够跨越语言障碍,进行有效沟通。然而,随着AI应用…

零基础机器学习(3)之机器学习的一般过程

文章目录 一、机器学习一般过程1.数据获取2.特征提取3.数据预处理①去除唯一属性②缺失值处理A. 均值插补法B. 同类均值插补法 ③重复值处理④异常值⑤数据定量化 4.数据标准化①min-max标准化(归一化)②z-score标准化(规范化) 5.…

基于yolov2深度学习网络的人脸检测matlab仿真,图像来自UMass数据集

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 网络架构与特征提取 4.2 输出表示 4.3损失函数设计 4.4预测阶段 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 load yolov2.mat% 加载…

让Chrome支持小于12px 的文字方式有哪些?区别?

文章目录 一、背景二、解决方案Zoom-webkit-transform:scale()-webkit-text-size-adjust:none 三、总结参考文献 一、背景 Chrome 中文版浏览器会默认设定页面的最小字号是12px,英文版没有限制 原由 Chrome 团队认为汉字小于12px就会增加识别难度 中文版浏览器 …

Cesium:按行列绘制3DTiles的等分线

作者:CSDN @ _乐多_ 本文将介绍如何使用 Cesium 引擎根据模型的中心坐标,半轴信息,绘制 3DTiles 对象的外包盒等分线。 外包盒是一个定向包围盒(Oriented Bounding Box),它由一个中心点(center)和一个包含半轴(halfAxes)组成。半轴由一个3x3的矩阵表示,这个矩阵是…

23.python标准库之turtle库

一、窗体函数 turtle.setup(width, height, startx, starty) width:窗口宽度 height:窗口高度 startx:窗口与屏幕左侧距离(单位象素) starty:窗口与屏幕顶部距离(单位象素) 二、画笔状态函数 三、画笔运动函数

【图解物联网】第2章 物联网的架构

2.1 物联网的整体结构 实现物联网时,物联网服务大体上发挥着两个作用。 第一是把从设备收到的数据保存到数据库,并对采集的数据进行分析。 第二是向设备发送指令和信息。 本章将会为大家介绍如何构建物联网服务,以…