首页 > 编程语言 >(day 13)JavaScript学习笔记(对象1)

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

时间:2024-03-20 19:29:05浏览次数:27  
标签:13 console log 对象 JavaScript key 属性 day name

概述

        这是我的学习笔记,记录了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'}

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

标签:13,console,log,对象,JavaScript,key,属性,day,name
From: https://blog.csdn.net/m0_63165331/article/details/136769032

相关文章

  • JavaScript中的“==“和“===“运算符的区别
    JavaScript中的比较运算符"=="和"==="用于比较两个值是否相等。尽管它们的目的相同,但它们在比较过程中采用了不同的策略1.“==”相等运算符:"=="运算符执行一种松散相等比较,它在比较之前会进行类型转换。如果进行比较的两个值类型不同,JavaScript会尝试将它们......
  • Day05
    数据类型语言要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用弱语言语言Java的数据类型分为两大类基本类型(primitivetype)数值类型引用类型(referencetype)![](C:\Users\ASUS\Pictures\Screenshots\屏幕截图2024-03-10105408.png)www.baidu.com......
  • P1325 雷达安装
    原题链接题解1.将雷达建在海岸线上最优,覆盖的面积最大2.根据光线可逆,雷达安装的位置覆盖多少小岛,等价于小岛被覆盖需要在哪个范围的位置上安装雷达3.想象把雷达安装在最左边,然后慢慢往右移,这个时候雷达覆盖的小岛数量会越来越多,当右移到某个原本能覆盖的小岛覆盖不了时,在那个......
  • JavaScript逆向之代码补环境(以iwencai为例)
    知识点1.浏览器环境与Node环境的区别1.1浏览器环境具有的功能页面渲染功能(1)加载和控制页面元素的能力->在js中由dom对象来完成(2)渲染引擎->和我们基本上无关浏览器本身的一些东西(窗口大小,url)->BOM对象能够执行js的能力->v8引擎负责执行js代码1.2Node环......
  • 【leetcode】135_candy糖果题_贪心算法_C语言_唐完了之后是?(雾
    原题如下:(蓝字为原题链接,可跳转查看)135.分发糖果n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并......
  • 1312. 让字符串成为回文串的最少插入次数c
    intmin;voiddfs(char*s,inthead,inttail,intcount){if(head>=tail){if(count<min)min=count;return;}if(s[head]==s[tail]){dfs(s,head+1,tail-1,count);}else{dfs(s,head+1,tail,count+1);......
  • JavaScript 系列教程 II JavaScript 基础知识
    ......
  • JavaScript 模块化
    JavaScript模块化JavaScript的历史问题背景JavaScript在一开始诞生的时候只是用来网页脚本的开发,其实没有模块化和命名空间的概念。JS的模块化需求日益增长。幼年期:无模块化模块化思维的萌芽。需要在页面中加载不同的js:动画库,表单库,格式化工具多种js文件被......
  • javascript:void(0);用法及常见问题解析
    javascript:void(0);是一个常见的JavaScript代码片段,通常用于在HTML中作为超链接的href属性值或者事件处理函数的返回值。下面是关于它的用法和常见问题的解析:用法:作为超链接的href属性值:<ahref="javascript:void(0);">点击这里</a>这样做的作用是让点击链......
  • P1355 神秘大三角
    原题链接题解叉积的运用,scanf控制输入格式code#include<bits/stdc++.h>usingnamespacestd;structnode{intx,y;}a[100005];intx[200005],y[200005];intmain(){for(inti=0;i<3;i++){scanf("(%d,%d)\n",&a[i].x,&a[i].y);......