您的位置:首页 > Web前端 > JavaScript

JavaScript中的引用类型

2016-03-16 20:36 495 查看

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 string 函数