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面向对象编程时再着重总结。相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android之获取手机上的图片和视频缩略图thumbnails
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- android上改变listView的选中颜色
- String.intern
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因