JavaScript 入门基础 - 对象(五)

news2024/11/15 22:48:43

JavaScript 入门基础 - 对象


文章目录

  • JavaScript 入门基础 - 对象
    • 1. 对象
      • 1.1 对象的基本理解
      • 1.2 为什么需要变量
    • 2. 创建对象的方式
      • 2.1 利用字面量创建对象
      • 2.2 变量属性函数方法的区别
      • 2.3 利用 new Object 创建对象
      • 2.4 利用构造函数创建对象
    • 3.new关键字
    • 4. 遍历对象属性
    • 5. JavaScript 内置对象
      • 5.1 内置对象基本理解
      • 5.2 Math 对象
      • 5.3 Date 对象
      • 5.4 数组对象
        • 5.4.1 数组对象的创建
        • 5.4.2 检测是否为数组的方法
        • 5.4.3 添加删除数组元素的方法
        • 5.4.4 数组排序
        • 5.4.5 数组转换为字符串
        • 5.4.6 其余重要方法
      • 5.5 字符串对象
        • 5.5.1 基本包装类型
        • 5.5.2 根据字符返回位置
        • 5.5.3 根据位置返回字符
        • 5.5.4 字符串操作方法


1. 对象

1.1 对象的基本理解

我们生活中的每一个事物都是一个对象,比如一片树叶、一只狗、一个人等等都可以是对象,在JavaScript当中,对象则指的是一组无序的相关属性和方法的集合,有字符串、数值、函数等等…总的来讲对象由属性和方法构成:

  • 属性:是指事物的基本特征,常用名词来表示,比如:name、age等等…
  • 方法:是指事物的行为活动,常用动词表示。

1.2 为什么需要变量

有时候我们需要保存一系列人的信息时,变量和数组不好表达,我们就要用到对象,js中对象的表达结构更加清晰,每一条信息都会详细说明是什么,有什么内容:

// name: '郑三',
// gender: '男',
// age: 35;

2. 创建对象的方式

在JavaScript中,现阶段我们创建对象的方式有三种:

  • 利用 字面量 创建
  • 利用 new Object 创建
  • 利用 构造函数 创建

2.1 利用字面量创建对象

对象字面量:就是 {} 里面包含了这个对象的所有属性和方法:

var person = {
	name: '郑三',
	age: 36,
	gender: '男',
	sayHi: function() {
		console.log('你好');
	}
}

console.log(person.name);
console.log(person['age']);
person.sayHi();
  1. 括号中的属性和方法我们采用键值对的形式 键 (属性名) :值 (属性值)。
  2. 多个属性或方法中间用逗号隔开。
  3. 方法冒号后面为匿名函数。
  4. 调用对象的属性 我们采取 对象.属性名 ,还有另一种方法就是 对象名[‘属性名’]
  5. 调用对象的方法我们采取 对象名.方法名()

注意:在调用对象的方法时千万别忘记加小括号。

2.2 变量属性函数方法的区别

  • 变量:是单独声明赋值,单独存在的。
  • 属性:在对象中的变量叫属性,不需要进行声明,描述该对象的特征。
  • 函数:通过 “函数名()” 进行调用,也是单独存在的。
  • 方法:对象中的函数叫做方法,方法也不需要声明,使用 “对象.方法名()” 方式调用,方法用来描述对象的行为功能。

2.3 利用 new Object 创建对象

var person = new Object();
person.name = '郑三';
person.age = 36;
person.gender = '男';
person.sayHi = function() {
	console.log('你好');
}
  1. 利用 等号= 赋值的方法添加对象的属性和方法
  2. 每个属性和方法之间用分号结束

2.4 利用构造函数创建对象

前面两种方法一次只能创建一个对象,我们可以利用函数的方法,重复这些相同的代码,我们把这个函数称为构造函数,构造函数就是把我们对象中相同的属性和方法抽象出来封装到函数里面,具体使用方法如下:

// function 构造函数名() {
//	 this.属性 = 值;
//	 this.方法 = function() {}
// }
// new 构造函数名();
function Person(name, age, gender) {
	this.name = name;
	this.age = age;
	this.gender = gender;
}
var zs = new Person('郑三', 36, '男'); // 返回结果是一个对象
console.log(zs.name);
console.log(zs['gender']);
  1. 构造函数名字首字母要大写
  2. 构造函数不需要使用return就可以返回结果
  3. 调用构造函数必须使用 new
  4. 用new Person() 调用函数就创建一个对象
  5. 属性和方法前面必须添加 this

注意:构造函数是抽象了对象的公共部分,并封装到函数里,而对象特指一个,通过 new 关键字创建对象的过程我们称为对象实例化

3.new关键字

new关键字的执行过程:

  1. 在内存中创建一个新的空对象
  2. 让this指向这个空对象
  3. 执行构造函数里面的代码,给这个新对象添加属性和方法
  4. 返回这个新对象(不需要return)

4. 遍历对象属性

利用for in 遍历我们的对象:

var person = {
	name: '郑三',
	age: 36,
	gender: '男',
}

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

5. JavaScript 内置对象

5.1 内置对象基本理解

js中有三种对象,分别为自定义对象、内置对象、浏览器对象,前两种为js基础,属于ECMAScript,第三种为浏览器独有,内置对象就是指JS语言自带的一些对象,提供了一些必要的属性和方法,方便了我们的开发。学习内置对象的使用,我们可以通过MDN / W3C查询文档

MDN:http://developer.mozilla.org/zh-CN/

学习对象方法:

  1. 先查阅该方法的功能
  2. 查看里面参数的意义和类型
  3. 查看返回值的意义和类型
  4. 通过demo进行测试

5.2 Math 对象

Math对象具有数学常数和函数的属性和方法,跟数学运算有关的可以使用Math中的成员,比如绝对值、最大值、取整等…

// 绝对值
console.log(Math.abs(-34));
console.log(Math.abs('-34'));	// 隐式转换,把字符串型转换为数字型
// 取整
// 1 Math.floor() 向下取整 往小取
console.log(Math.floor(4.2)); // 4
console.log(Math.floor(4.9)); // 4
// 2 Math.ceil() 向上取整 往大取
console.log(Math.ceil(4.2)); // 5
// 3 Math.round() 四舍五入
console.log(Math.round(4.2));	// 4
console.log(Math.round(-1.5));	// -1

更多方法可以查阅文档进行学习

5.3 Date 对象

Date对象是一个构造函数,必须使用new来调用我们创建的日期对象

// 1.使用Date 如果没有参数,则返回系统当前的时间
var time = new Date();
console.log(time);
// 2.参数一般写成数字型或者字符串型
var time1 = new Date(2023, 12, 4); 
console.log(time1);	// 返回的是2月4号
var time2 = new Date('2023-1-4 10:08:23');
console.log(time2);

5.4 数组对象

5.4.1 数组对象的创建

数组对象可以通过字面量或者 new Array() 进行创建

// 1.利用字面量创建数组
var arr = [3, 5, 6];
console.log(arr[1]);

// 2.利用new Array()
var arr1 = new Array();	// 创建了一个空的数组
var arr2 = new Array(2);	// 创建一个长度为2的数组
var arr3 = new Array(2, 3); // 两个数组元素 2 和 3

5.4.2 检测是否为数组的方法

1 利用 instanceof 运算符,它可以检测是否为数组

var arr = [1, 6, 7];
console.log(arr instanceof Array);	// true

2 利用 Array.isArray(参数);

var arr = [1, 6, 7];
console.log(Array.isArray(arr));

5.4.3 添加删除数组元素的方法

在这里插入图片描述
添加元素

  • push 是可以给数组追加新的元素,参数直接写数组元素。
  • push完毕之后,返回结果是新数组的长度,原数组会发生变化。
  • unshift可以给数组前面追加新的元素参数直接写数组元素。
  • unshift完毕之后,返回结果是新数组的长度,原数组会发生变化。。

删除元素

  • pop()可以删除数组的最后一个元素,且只能删除一个元素,参数直接写数组元素
  • pop完毕之后,返回结果是 删除的那个元素,原数组发生变化

5.4.4 数组排序

(1) 翻转数组
使用 reverse() 可以对数组进行翻转:

var person = ['tom', 'mike', 'mary'];
person.reverse();
console.log(person);	// 结果为['mary', 'mike', 'tom']

(2) 冒泡排序
sort() 方法用原地算法对数组进行排序,并且返回数组:

var arr = [1, 4, 3, 7];
arr.sort();
console.log(arr);

注意 sort() 方法单用只对部分数有效,比如个位数,但出现两位及以上很难实现排序,我们可以在sort中加入一个函数实现排序:

var arr = [14, 414, 334, 74];
arr.sort(function(a, b) {
	// return a - b; // 升序排列
	return b - a;	// 降序排列
});
console.log(arr);

5.4.5 数组转换为字符串

要实现数组转换为字符串我们可以使用两个方法:

  1. toString() 实现数组转换为字符串
var arr = [4, 5, 8, 9];
console.log(arr.toString());	// 4,5,8,9
  1. 还可以利用 join(‘分隔符’) 的方法,如果括号内什么都不写默认用逗号分隔
var colorArr = ['pink', 'bule', 'yellow'];
console.log(colorArr.join());	// pink,bule,yellow
console.log(colorArr.join('-'));	// pink-bule-yellow

5.4.6 其余重要方法

在这里插入图片描述
数组方法很多,建议大家查阅文档进行学习。

5.5 字符串对象

5.5.1 基本包装类型

对象、复杂数据类型才有属性和方法,要让简单数据类型拥有属性方法,就可以把简单数据类型包装成复杂数据类型:

var str = 'tom'; // 这是个简单数据类型
console.log(str.length);	// 简单数据类型拥有length属性是进行了包装

// 上述两行代码的内部操作
// var temp = new String('andy');	第一步,把简单数据类型包装为复杂数据类型
// str = temp;	第二步,把临时变量值给 str
// temp = null;	最后,销毁临时变量

5.5.2 根据字符返回位置

字符串本身不会因为方法而改变,方法等操作完成会返回一个新的字符串,查找字符位置用到两个常用方法:

方法名解释
indexOf(‘查找的字符’,起始位置)返回查找字符在字符串中的位置,如没有找到返回-1,起始位置可选
lastIndexOf()从后往前查找,找第一个匹配的字符
var str = '我亦无他,唯手熟尔。有心栽花花不开,无心插柳柳成荫';
console.log(str.indexOf('无'));	// 2
console.log(str.indexOf('无', 3));	// 指定从索引号为 3 的位置向后查找,结果为 18

案例:统计a在字符串中出现的位置以及次数

var str = 'asdgbnhaasgtasa';
var index = str.indexOf('a');
var num = 0;	// 初始次数为零
while (index !== -1) {	// 判断是否找到a
	console.log(index);
	index = str.indexOf('a', index + 1);	// 实现索引加一操作,继续向下查找
}
console.log('a出现的次数为' + num);

5.5.3 根据位置返回字符

根据索引位置也可以返回字符,主要有以下方法:

方法解释
charAt(索引号)根据所提供的索引号返回字符
charCodeAt(索引号)返回相应索引号字符的ASCII码值
str[索引号]H5新增,通过索引号返回字符
var str = 'result';
console.log(str.charAt(2));	// s
console.log(str.charCodeAt(2));	// 返回相应索引号字符的ASCII码值,结果为115
console.log(str[1]);	// e

5.5.4 字符串操作方法

方法名解释说明
concat(str1,str2,…)将多个字符串进行拼接,作用相当于+
substr(‘‘要截取的起始位置’’,“截取的字符长度”)从起始位置(索引号)开始截取指定的字符串长度(length)
slice(开始位置,结束位置)从开始位置取到结束位置前一个,结束位置不取(都为索引号)
replace(‘被替换的字符’,‘新字符’)将新字符替换掉被替换的字符,这种方法只会替换一个符合条件的字符
split(‘分隔符’)将字符转换为数组
var str = 'come';
var str1 = '三人行,必有我师焉';
var str2 = 'came';
var colorStr = 'pink, black, blue';
console.log(str.concat(' ', 'on'));	
console.log(str1.substr(4, 4));
console.log(str1.slice(0, 8));
console.log(str2.replace('a', 'o'));
console.log(colorStr.split(','));

执行结果如下:
在这里插入图片描述

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

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

相关文章

二、Promise

Promise1、回调地狱1.1 如何解决回调地狱的问题1.2 Promise 的基本概念2、基于回调函数按顺序读取文件内容3. 基于 then-fs 读取文件内容3.1 then-fs 的基本使用3.2 .then() 方法的特性3.3 基于 Promise 按顺序读取文件的内容3.4 通过 .catch 捕获错误3.4 通过 .catch 捕获错误…

基于RBAC权限控制模型的管理系统的设计与实现

文章目录一、RBAC 权限设计1.1 模型概述1.2 模型分类二、基于RBAC的后台管理系统2.1 项目概述2.2 技术选型2.3 内部处理流程2.4 功能模块展示2.5 权限控制展示2.6 下载说明一、RBAC 权限设计 1.1 模型概述 基于角色的访问控制 RBAC,是实施面向企业安全策略的一种有…

kafka的介绍和基本使用

文章目录Kafka介绍1.Kafka的使用场景2.Kafka基本概念kafka基本使用1.安装前的环境准备2.启动kafka服务器3.创建主题topic4.发送消息5.消费消息Kafka介绍 Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的 &…

载波相位误差对BPSK解调性能的影响理论推导

在上一篇博客基础上,继续讨论载波相位误差对解调性能的影响! 【通信原理】通信原理书中解调器输入端信噪比a2/(2σ2)与比特信噪比Eb/No有什么关系? 以BPSK为例,从解调原理图可以看出,当本地参考载波信号与原始载波存在相位误差时,假设相位差为 φ \varphi φ,则解调器低…

【Linux】了解磁盘/文件系统/inode

文章目录一.磁盘1.磁盘的结构2.磁盘的定位(寻找方案)3.磁盘的分区与格式化介绍二.理解inode三.ext2文件系统的存储方案一.磁盘 1.磁盘的结构 问题1:什么是磁盘? 磁盘是在冯诺依曼体系结构中几乎唯一的机械设备,机械设…

AntDB数据库助力中国移动结算中心建设

为响应中国移动集团公司IT集中化的要求:全面落实“十三五”十大战略工程,加快“推动公司IT资源一体化整合“重点专项工作。以IT系统为载体,构建高效运营支撑体系,形成集中化支撑和协同业务支撑模式,打造极致体验、高效…

列表初始化(内置类型、自定义类型)

列表初始化的特性来源于单参数的隐式类型转换。以下面这个赋值为例,我们可以理解成 先创建一个匿名对象Point(2),这个时候就变成了 Point p Point(2);然后会调用拷贝构造。 虽然隐式转换的可以这样理解,但是最后会被编译器优化成直接调用有…

[Android]Bitmap Drawable

在实际开发中&#xff0c;我们可以直接引用原始的图片&#xff0c;但是也可以通过xml的方式来描述它&#xff0c;通过xml来描述的BitmapDrawable可以设置更多效果。 <?xml version"1.0" encoding"utf-8"?> <bitmap xmlns:android"http://…

java spring IOC Bean管理操作讲解 并代码演示xml的实现方式

查看本文 需要您使用spring创建过对象管理 如果之前没有接触过 可以先查看我的文章 java 手把手带你创建一个spring入门案例 IOC 操作中 Bean管理主要有两个部分 分别是创建对象和注入属性 他们都有两种实现方式 分别是xml和注解方式实现 本文只演示xml 后续我会出注解方式的文…

第十三届蓝桥杯省赛 JAVA A组 - 蜂巢

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;蓝桥杯题解集合 &#x1f4dd;原题地址&#xff1a;蜂巢 &#x1f4e3;专栏定位&#xff1a;为想参加蓝桥别的小伙伴整理常考算法题解&#xff0c;祝大家都能…

背包问题——“0-1背包”,“完全背包”(这样讲,还能不会?)

目录 一、0-1背包 1.1、0-1背包解决的问题 1.2、dp数组定义 1.3、转移方程 1.3.1、二维dp数组 1.3.2、一维dp数组 1.4、遍历顺序 1.5、测试代码 1.6、练习 二、完全背包 2.1、完全背包解决问题 2.2、与0-1背包的区别 2.3、测试代码 2.4、拓展问题&#xff1a;装满…

【2022】13 年终总结

新年Flag 2023年&#xff0c;为了各方面能有所进步&#xff0c;列一些希望达成的目标和想做的事&#xff0c;到年底看看效果。 撰写一篇英文论文 申请到CSC 和xl去外地玩两次 想到了再加 去年Flag倒了几个&#xff1f; 一维河网水动力学模型导师说不用自己编&#xff0c;看懂…

Numpy文件交互:.npy和.npz有什么区别?

文章目录saveloadsavezsavez_compressedNumpy提供了以.npy为后缀的文件存储方案&#xff0c;与这种文件格式密切相关的读、写函数分别是np.load和np.save。通过savez可以一次性存储多个数组&#xff0c;并可通过load以键值对的形式读取出来&#xff1b;如果觉得文件太大&#x…

Mybatis缓存

内存中的一块存储空间&#xff0c;服务于某个应用程序&#xff0c;旨在将频繁读取的数据临时保存在内存中&#xff0c;便于二次快速访问。 一级缓存 SqlSession级别的缓存&#xff0c;同一个SqlSession的发起多次同构查询&#xff0c;会将数据保存在一级缓存中。 注意&#x…

【NI Multisim 14.0虚拟仪器设计——放置虚拟仪器仪表(频率特性测试仪)】

目录 序言 &#x1f34d;放置虚拟仪器仪表 &#x1f349;频率特性测试仪 &#x1f34a;&#x1f34a;1.“模式”选项组 &#x1f34a;&#x1f34a;2.“水平”选项组 &#x1f34a;&#x1f34a;3.“垂直”选项组 &#x1f34a;&#x1f34a;4.“控件”选项组 序言 N…

SpringBoot+Vue项目大学生租房平台

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏…

数据结构课程设计[2023-01-19]

数据结构课程设计[2023-01-19] 数据结构课程设计 一、课程设计要求 实现指定的题目&#xff08;学号最后两位%41&#xff09;&#xff0c;并撰写课程设计报告。独立完成&#xff0c;功能不完备也没关系&#xff0c;只要是自己做的 使用 C、C或者 JAVA 语言&#xff0c;采用…

​第四章 Flink 窗口和水位线​

Flink 系列教程传送门 第一章 Flink 简介 第二章 Flink 环境部署 第三章 Flink DataStream API 第四章 Flink 窗口和水位线 第五章 Flink Table API&SQL 第六章 新闻热搜实时分析系统 一、时间概念&#xff1a;事件时间和处理时间 在流式处理的过程中&#xff0c;数据…

详解微信小程序开发中的“数据绑定”和代码样例

简介 首先需要区分微信小程序的运行环境和框架系统。运行环境为小程序在手机当中运行的时候&#xff0c;微信客户端所能提供的环境支持&#xff0c;也就是在这种环境下如何进行数据渲染工作&#xff1b;框架系统则是微信小程序在进行开发的过程中&#xff0c;如何通过代码实现…

数字逻辑理论——组合电路

利用数据选择器设计组合逻辑电路 m&#xff1a;组合电路输入变量个数 n&#xff1a;数据选择器的控制端个数 &#xff08;1&#xff09;mn 利用8选1数据选择器设计函数&#xff1a;FAB’A’CBC’ 待设计卡诺图&#xff1a; F∑(1,2,3,4,5,6) &#xff08;2&#xff09;m&g…