《javascrit高级程序设计》| 第五章:引用类型(学习笔记)

本文深入探讨JavaScript中的引用类型,如Object、Array、Date、RegExp、Function等,详细讲解了每种类型的创建方法、属性和方法。同时介绍了基本包装类型如Boolean、Number、String的特性与方法,以及内置对象如Global、Math的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引用类型:一种数据结构,将数据与功能组织在一起。

Object类型

创建方法:

var person = new Object();
var person = {};

访问属性:

person['name'];		//可通过变量访问
person.name;
Array类型

创建方法:

var colors = new Array();
var colors = [];

访问数组值:
colors[0];

数组的length属性:非只读,可以从数组的末尾移除项或向数组中添加新项

colors.length = colors.length -1;
colors[colors.length] = "black";

检测数组:

instanceof操作符
Array.isArray()方法

转换方法:

toLocaleString()、toString()、valueOf()
join()		//只接受一个参数,该参数用作分隔符,然后返回包含所有数组项的字符串

栈方法:后进先出

push()		//接收任意数量的参数,将其逐个添加到数组末尾,并返回修改后数组的长度
pop()		//从数组的末尾移除最后一项

队列方法:先进先出

shift()		//移除数组中第一个项并返回该项,同时数组长度减1
unshift()	//在数组的前端添加任意个项,并返回新数组的长度

重排序方法:

reverse()	//反转数组项的顺序
sort()		//按升序排列数组,且该方法可以传入一个比较函数作为参数

操作方法:

concat()	//基于当前数组的所有项创建一个新数组,即将接收到的参数添加到这个数组的副本的末尾,并返回新构建的数组
slice()		//基于当前数组中的一个或多个项创建一个新数组,接收一个或俩个参数,即返回项起始和结束的位置
splice()	//删除:指定俩个参数,要删除的第一项的位置和要删除的项数。
			//插入:提供三个参数,起始位置,要删除的项数,要插入的项
			//替换:提供指定三个参数,起始位置,要删除的项数,要插入的任意数量的项

位置方法:
俩个方法都接收俩个参数:要查找的项和查找起点位置的索引(可选) 没找到则返回-1,找到则返回位置

indexOf()		//从前往后查
lastIndexOf()	//从后往前查

迭代方法:
每个方法都接收俩个参数:要在每一项上运行的函数,运行该函数的作用域对象(可选)
传入这些方法中的函数会接收三个参数:数组项的值(item),该项在数组中的位置(index),数组对象本身(array)

every()		//如果该函数对每一项都返回true,则返回true
filter()	//返回该函数会返回true的项组成的数组
forEach()	//没有返回值
map()		//返回每次函数调用的结果组成的数组
some()		//如果该函数任一项返回true,则返回true

归并方法:
俩个方法都会迭代数组的所有项,然后构建一个最终返回的值
且都接收俩个参数:在每一项上调用的函数,最为归并基础的初始值(可选)
而传给方法的函数接收四个参数:前一个值(prev),当前值(cur),项的索引(index),数组对象(array)
这个函数返回的任何值都会作为第一个参数自动传给下一项
且第一次迭代发送数组的第二项上

reduce()		//从前往后遍历
reduceRight()	//从后往前遍历

Date类型

创建方法:
var now = new Date();

在调用Date构造函数而不传递参数的情况下,新创建的对象将自动获得当前日期和时间。

Date.parse()	//接收一个表示日期的字符串参数("月/日/年"),然后尝试根据中国字符串返回响应日期的毫秒数,如果该字符串不能表示日期,则返回NaN
Date.UTC()		//同样返回表示日期的毫秒数。参数为:年份,基于0的月份,天(可选),小时(0-23,可选),分钟(可选),秒(可选),毫秒(可选)
Date.now()		//表示调用这个方法时的日期和时间的毫秒数

日期格式化方法:
toDateString()			//以特定于实现的格式显示星期几、月、日和年
toTimeString()			//特定于实现的格式显示时,分,秒和时区
toLocaleDateString()	//特定于地区的格式显示星期几、月,日和年
toLocaleTimeString()	//特定于实现的格式显示时,分,秒
toUTCString()			//以特定于实现的格式显示时,分,秒(推荐)
RegExp类型

正则表达式

var pattern = /[bc]at/i;
var pattern = new RegExp("[bc]at","i");

g:全局模式
i:不区分大小写
m:多行模式

模式中使用的所有元字符都必须转义:

( { \ ^ $ | ? * + . } )

RegExp实例属性:

global:布尔值,表示是否设置了g标志
ignoreCase:布尔值,表示是否设置了i标志
lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起
multiline:布尔值,表示是否设置了m标志
source:正则表达式的字符串表示,按字面量形式而非传入构造函数中的字符串形式返回

RegExp实例方法:

exec()		//接收一个参数,返回包含第一个匹配项信息的数组
			//返回的数组有俩个属性:index表示匹配项在字符串中的位置,而input表示应用正则表达式的字符串
test()		//接收一个字符串参数,在模式与该参数匹配的情况下返回true,反之返回false

RegExp构造函数属性:
input/lastMatch/lastParen/leftContext/multiline/rightContext


Function函数

函数名是函数的一个指针,故而函数可以有多个名字,但是不能被重复定义(没有重载)

创建方法:

function sum (num1,num2){
	return num1+num2;
}

var sum = function(num1,num2){
	return num1+num2;
}

使用不带圆括号的函数名是访问函数指针,而不是调用函数

函数内部属性:

arguments	//包含传入函数的所有参数,是一个类数组对象,拥有一个callee属性,指向拥有这个arguments的函数
this		//引用函数执行的环境对象
caller		//保存着调用当前函数的函数的引用,若是在全局作用域调用当前函数,则其值为null

函数属性和方法:

length		//表示函数希望接收的命名参数的个数
prototype	//保存函数的实例方法
apply()		//接收俩个参数:在其中运行函数的作用域(this),参数数组
call()		//同样接收俩个参数:在其中运行函数的作用域(this),传递的参数需要逐个列举出来
bind()		//创建一个函数的实例,其this值会被绑定到传给bind()函数的值
基本包装类型

对基本包装类型的实例调用typeof会返回"object",而且所以基本包装类型的对象在转换为布尔类型时值都是true

Boolean类型

var falseObject = new Boolean(false);
var result = falseObject && true;
alert(result);	//true

Number类型

var nunberObject = new Number(10);

toFixed(num)		//表示带有0-20个小数位的数值
toExponential(num)	//返回指数表示法
toPrecision(num)	//返回固定的格式

String类型

var stringObject = new String("hello world");

字符方法:

//俩个方法都接收一个参数,基于0的字符位置
charAt()		//以单字符字符串的形式返回给定位置的字符
charCodeAt()	//以单字符字符串的形式返回给定位置的字符编码

字符串操作方法:

concat()		//可接收任意多个参数,用于将一或多个字符串拼接起来,返回拼接得到的新的字符串
//这三个方法都会返回被操作字符串的一个子字符串
//接收以或俩个参数:指定子字符串开始位置,表示子字符串结束的位置
//slice和substring的第二参数指定子字符串最后一个字符后面的位置
//substr的第二参数则指定返回的字符个数
slice()			
substr()
substring()

传入参数为负值时,slice()会将传入的负值与字符串的长度相加;
substr()将负的第一个参数加上字符串的长度,而将负的第二参数转换为0;
substring()则会把所有负值参数都转换为0

字符串位置方法:

indexOF()
lastIndexOf()

trim()	//创建一个字符串的副本,删除前置及后缀的所有空格,然后返回结果
trimLeft()/trimRight()

大小写转换:

toLowerCase()
toUpperCase()
tolocaleLowerCase()
toLocaleUpperCase()

字符串匹配方法:

match()		//只接收一个参数:正则表达式/RegExp对象,返回一个数组
search()	//参数同上,返回字符串中第一个匹配项的索引;如果没有找到匹配项则返回-1
replace()	//接收俩个参数:RegExp对象/字符串,字符串/函数;
			//如果第一个参数为字符串,那么只会替代第一个子字符串
			//要想替代所有的子字符串,只能提供一个全局(g)的正则表达式
			//第二参数可以为一个函数:该函数可以传三个参数(模式的匹配项match,模式匹配在字符串中的位置pos,原始字符串)
split()		//基于一个指定的字符将一个字符串分割成多个子字符串,并将结果放在一个数组中
			//可以接收第二参数,用于指定数组的大小

htmlEscape()	//可以转义四个字符:小于号、大于号、和号、双引号
localeCompare()	//比较俩个字符串,返回:1,0,-1(该值取决实现)
				//基于字符串再字母表中的排列顺序,字符串排在字符串参数之前返回-1
fromCharCode()	//接收多个字符编码,返回字符串

单体内置对象

Global 对象

所有在全局中定义的属性和函数,最终都是Global对象的属性

Global作为Window对象的一部分而被实现,即全局作用中声明的所有变量和函数,都成为了window对象的属性

//下面俩个方法对URI进行编码,以便发送给浏览器
encodeURI()				//主要用于整个URI进行编码
encodeURIComponent()	//主要用于URI中的某一段进行编码
//对上面俩个函数处理得到的字符的解码
decodeURI()
decodeURIComponent()
//一个完整得ECMAscript解析器
eval()

eval()中创建的任何变量和函数都不会被提升,他们只是在eval()被执行的时候创建

Math 对象

Math.min()			//确定一组数中的最小值
Math.max()			//确定一组数中的最大值
Math.ceil()			//执行向上舍入
Math.floor()		//执行向下舍入
Math.round()		//四舍五入
Math.random()		//返回[0-1]的一个随机数
selectFrom(lowerValue,upperValue)		//返回介于最大值与最小值之间的一个数值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值