JavaScript中的引用类型
Posted 召唤师峡谷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript中的引用类型相关的知识,希望对你有一定的参考价值。
javascript中的引用类型
JavaScript中的数据类型有两种,基本类型与引用类型!基本类型主要包括Boolean、String、Number;引用类型包括Object、Array、Function、Date(常用的)。
引用类型
引用类型的值(对象)是引用类型的一个实例。在JS中,引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称为类,但这种称呼并不妥当。尽管JS从技术上讲是一门面向对象的语言,但是并不具备传统的面向对象语言所支持的类和接口等基本结构。引用类型有时候也能被称为对象定义,因为他们描述的是一类对象所具有的属性和方法。
Object类型
创建object类型实例有两种方式。第一种是使用new操作符后跟Object构造函数:
var person =new object();
person.name="bluce";
person.sex="man";
person.age=58;
第二种是使用对象字面量表示法,(Key:Value)
var person =
name:'bluce',
sex:'man',
age:58
推荐使用第二种方式,简洁,代码量少,有一种封装数据的感觉。向函数传递大量参数的首选方式(前面博客都采用的这种方式)。
Array类型
Object类型是JS中最常用的数据类型,Array类型仅次之。Array类型有如下特性:
- 数组的每一项可以保存类型的数据。38,’bluce’,name:’bluce’,sex:’man’;
- 数组长度是动态变化的,类似于java中的泛型
同样创建数组也有两种方式,第一种是使用Array构造函数,代码如下:
var persons =new Array();
var persons=new Array(20);
var persons=new Array('bluce','james','jhon');
另外,在使用Array构造函数时也可以省略new操作符。省略操作符的结果和上面代码结果相同:
var persons = Array();
var persons = Array(20);
var persons = Array('bluce','james','jhon');
第二种是使用数组字面量表示法,数组由[]包裹,多个数据项之间以逗号隔开。
var players = [];
var players = ['kurry','kobe','james'];
索引与Java、C#等语言一样,从0开始。item=players[0];
Array 常用方法:
方法 | 作用 |
---|---|
push() | 添加数据至数组末尾,可以是任意多项;返回修改后数组长度 |
pop() | 移除数组末尾项,返回移除项;length-1 |
shift() | 移除数组首项,返回移除项;length-1 |
unshift() | 在数组前端添加任意多项,并返回修改后数组长度 |
reverse() | 重排序 |
sort() | 重排序 |
concat() | 根据传入参数重新构建数组 |
slice() | 分割数组 |
splice() | |
indexOf | |
lastIndexOf() | |
迭代方法 | every()、some()、map()、forEach()、filter() |
方法有些多,后面总结自己常用的一些方法。
Function类型
JS中的函数实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定(函数无重载)。函数定义由三种方式:
第一种——函数声明:
function sum(num1,num2)
return num1+num2;
第二种是函数表达式,下段代码定义了变量sum并将其初始化为一个函数。
var sum = function(num1,num2)
return num1+num2;
;
第三种是使用Function构造函数。Function构造函数可以接收任意数量的参数,但最后一个参数始终被看成是函数体,而前面的参数则枚举了新函数的参数,例如:
var sum=Function('num1','num2','return num1+num2');
不推荐第三种方式,但这种方式表明函数实际上就是对象。一二两种方式中函数声明用的多一些,函数表达式次之。
函数名仅仅是指向函数的指针,因此函数名与包含对象指针的其他变量没有什么不同,也就是说一个函数可能会有多个名字。使用不带圆括号的函数名是访问函数的指针,而非调用函数。例如:
function sum(num1,num2)
return num1+num2;
alert(sum(2,2)); //4
var anotherSum=sum;
alert(anotherSum(2,2));//4
sum=null;
alert(anotherSum(2,2));//4
函数没有重载
函数名是指向函数的指针,JS中没有函数重载的概念
function add(num)
return num+10;
function add(num)
return num+20;
var result=alert(add(10)); //30
上述代码声明了两个同名的函数,其结果是后面的函数覆盖了前面的函数,以上代码实质上等同与以下代码:
var add=function(num)
return num+10;
;
add =function(num)
return num+20;
;
var result=alert(add(10)); //30
add只是指针,重复声明只是改变了add指向的函数。
函数属性和方法
JS中函数是对象,因此函数也有属性和方法。每个函数都包含两个属性:length和prototype。其中,length属性表示函数希望接收的命名参数的个数。prototype(原型),后面重学js面向对象编程时再着重总结。
以上是关于JavaScript中的引用类型的主要内容,如果未能解决你的问题,请参考以下文章