JavaScript引用类型详解:对象、数组及其核心方法

作者:小括号时间:2026-10-30 05:59:23浏览:135

本文深入解析JavaScript中的引用类型,重点讲解对象与数组的创建及操作。内容涵盖Object和Array的基础用法,详细阐述数组的栈与队列操作、排序、切片、拼接及位置查找方法,并介绍every、filter、map等迭代器与reduce归并器的使用场景,帮助开发者掌握JS数据结构的处理技巧。

引用类型概述

引用类型

引用类型是一种数据结构,旨在将数据和相关功能整合在一起。虽然它常被称为类,但这种叫法并不准确。尽管ECMAScript在技术层面属于面向对象语言,它却缺乏传统面向对象语言中类和接口等基础结构。由于引用类型描述了一类对象共有的属性和方法,因此有时也被称为对象定义。

前文已提及,引用类型的值即为对象。在ECMAScript中,引用类型是用于组织数据和功能的数据结构,而具体的对象则是某个特定引用类型的实例。


var a=new Object(); 

对象与数组基础

上述代码声明了一个类型为Object的实例,并将其赋值给变量a。这意味着变量a并不直接包含该实例,而是保存指向该实例的指针。

对于Object类型,通常采用对象字面量语法来创建实例,例如var a={name:"Nick",age:20}。这种方式在视觉上提供了封装感。访问对象属性时,可以使用点表示法或方括号表示法,其中a.name与a["name"]等价,需注意方括号内的"name"必须是字符串形式。

对于Array类型,可以使用数组字面量语法进行创建。

针对Array类型,可以通过修改length属性来改变数组长度,这会导致从数组末尾添加或移除元素。

判断一个值是否为数组的方法是使用Array.isArray(value)。

转换方法包括:toString(),它将数组转换为以逗号分隔各项的字符串;valueOf(),它返回数组本身;toLocaleString(),其具体行为可通过示例演示。


var p1={
toString:function(){return "guo";},
toLocaleString:function(){return "yuzhe";}
}
var p2={
toString:function(){return "song";},
toLocaleString:function(){return "hap";}
}
var p=[p1,p2];
alert(p); //guo,song
alert(p.toLocaleString()); //yuzhe,hap 

数组转换与栈队列操作

可以看出,alert在输出前会隐式调用toString()方法。此外,还有join()方法,它使用指定的分隔符将数组项连接成字符串,若未设置参数,默认分隔符为逗号。

栈操作方法包括:push(),用于在数组末尾添加项并返回新长度;pop(),用于从末尾删除项并返回被删除的项。

队列操作方法包括:shift(),用于移除并返回数组第一项;unshift(),用于在数组开头添加项并返回新长度。

数组重排序方法

重排序方法(返回值为数组):

reverse(),用于反转数组顺序,即a[length-1]=a[0]。

sort(),默认情况下按ASCII码进行升序排序,而非数值大小比较。因此,若需按数值大小排序,需要传入自定义比较函数。


function compare(no1,no2){
if(no1<no2){
return -1;}
else if(no1>no2){
return 1;}
else{
return 0;} 
}
var a=[1,2,3,4,6,5];
a.sort(compare);
alert(a)

若希望实现降序效果,只需反转比较函数中的if语句逻辑即可。

数组切片与拼接操作

操作方法:

concat(),该方法会创建原数组的一个副本,对原数组无影响,其作用是将传入的参数添加到数组末尾。

slice(),该方法会创建副本,接受1个或2个参数(分别表示返回项的起始位置和结束位置,不包含结束位置)。若只提供一个参数,则返回从指定位置到结尾的所有项。若参数为负数,则结果为length+arguments;若结束位置小于起始位置,则返回空数组。

splice():1.删除方法,指定两个参数,分别为要删除的第一项位置和删除的项数。

2.插入方法,指定三个参数,分别为起始位置、0(表示要删除的个数)以及要插入的项。

3.替换方法,指定三个参数,分别为起始位置、要删除的个数以及要插入的项。

插入或替换操作的位置均从起始位置开始计算。

数组位置查找

位置方法:

indexOf(),返回要查找项的数组下标,若未找到则返回-1。参数包括要查找的项以及可选的查找起点索引。

lastIndexOf(),这是indexOf()的逆序版本。

数组迭代与归并方法

迭代方法:

这些方法接收2个参数:要运行的函数以及可选的作用域。传入这些方法的函数需要三个参数:item(数组项的值)、index(该项的位置)和array(数组对象本身)。

every(),对数组中的每一项运行给定函数,若每一项都返回true,则最终返回true。

filter(),返回由那些会返回true的项组成的新数组。

forEach(),对数组中的每一项运行给定函数,该方法无返回值。

map(),返回每次函数执行结果组成的新数组。

some(),若有一项返回true,则最终返回true。


<script>
var a=[1,2,3,4];
var b=a.every(function(item,index,array){
return item>2;
});
alert(b); //false
</script>

归并方法:

reduce(),从数组的第一项开始遍历;reduceRight(),从数组的最后一项开始遍历。

使用reduce()可以计算数组中所有元素的总和。


<script>
var a=[1,2,3,4];
var b=a.reduce(function(prve,cur,index,array){
return prve+cur;
});
alert(b); //10

第一次执行时,prev为1,cur为2;第二次执行时,prev为3,cur为3。

以上所述是小编给大家介绍的JavaScript入门教程之引用类型的相关内容,希望对大家有所帮助!

作者最新文章