【每天学3章,一周掌握js】第5章:引用类型
2012-07-08 00:23
337 查看
关于引用类型的定义:
引用类型的值(对象)是引用类型的一个实例。
在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。它也通常被称为【类】,但是在js中,类这个称呼并不太妥当。
尽管在技术角度上将,js是一门面向对象的语言,但是严格意义上来讲,js并不具备面向对象语言所支持的类、接口、继承等基本属性。
引用类型也被称为【对象定义】,因为他们描述的是一类对象所具有的属性和方法。
第一节:Object类型
Object 可以说是js中使用最多的一个类型,尽管Object的实例没有多少功能,但是对于程序中存储和传输数据而言,却是非常理想的选择。
创建Object:
(1)通过new操作符创建:
(2)使用对象字面量创建:这种方式有封装的感觉,而且对于传输大量参数很适用
(3)如果创建时花括号{}留空,则可以定义只包含其默认属性和方法的对象。
注意:在通过字面量定义对象时,不会调用Object构造函数 (firefox 除外)
访问对象属性的2种方法:
(1)通过 . 操作符进行访问: Obj.a;
(2)通过 [] 进行访问: Obj[a];
以上两种方式没有任何区别,但是,通过[]访问的优点是可以使用变量,例如:
第二节:Array 类型
1.用构造函数创建Array对象
(1)使用Array构造函数 : var a=new Array();
(2)如果预先知道数组中的项目的数量,则可以: var a=new Array( 20 ); 只不过这20项的值都是Undefined
(3)也可以直接向构造函数传递需要创建的项:var a=new Array( "red","blue" );
(4)直接给构造函数传递一个数值,会创建数值数量的空项目:var a=new Array( 3 )
(5)创建数组时也可以省略new操作符:var a= Array( "red","blue" );
2.用字面量创建Array对象
3.数组的length属性
数组的length属性不是只读的,因此可以通过设置length来从数组的末尾添加或者移除项目:
4.转换方法
所有对象都具有 toString()、toLocaleString()、valueOf() 方法。
其中,调用数组的toString() 和 valueOf() 方法返回相同的值,这会在后台调用数组每一项的toString()方法,来拼接其最终的字符串。
join方法:数组的toString()等方法在输出时,默认用 , 进行分割,利用join可以指定分割符
5.栈方法和队列方法
(1)push() 接收任意数量的参数,把他们添加到数组的末尾,并返回新数组的长度。
(2)pop() 从数组的末尾移除项目并返回该项目,与push()一起可以模拟栈操作;
(3)shift() 可以移除数组第一个项目并返回该项目,与push()一起可以模拟队列操作
(4)unshift() 接收任意数量参数,在数组前端添加项目,并返回新数组的长度。
6.重排序方法
(1)reverse() 反转数组项目的顺序
(2)sort() 默认按升序排列数组项目,即最小的在最前面,为了排序,sort()会调用每个项目的toString()方法转为字符串,然后比较得到的字符串,已确定排序
由此可见,sort()的默认排序并不智能,所幸,sort()可以接收一个比较函数作为参数,来实现自定义排序。
reverse() 和 sort() 返回的都是修改后的数组
7.操作方法
(1)concat() 基于当前数组创建一个新的数组,会将接收到的数值或数组的每一项添加到新的数组中
(2)slice() 能够基于当前数组创建新数组,接收1个或2个参数,即要返回的项目的起始和结束位置
如果slice()参数中有负数,则用数组长度加上负数来确定其位置,如果开始位置大于结束位置,则返回空数组。
如果是负数,其实可以理解成从数组末尾开始查找,起始位置变成了结束位置,整个颠倒了..
(3)splice() 可以说是最强大的数组操作方法了,主要作用是向数组中部插入项目。使用方法有三种:
删除——可以删除任意项,只需指定两个参数:要删除的第一项位置,及要删除的项数;
插入——指定位置插入任意数量的项,至少提供3个参数:起始位置、0(要删除的项数为0即为插入操作)、要插入的项(可为多项)
替换——指定位置删除任意数量项目,并且插入任意数量项目,删除与插入的可以不相等。至少指定3个参数:起始位置、要删除的项目数、要插入的项目。
splice() 始终都会返回一个数组,包含被删除的项,如果没有被删除的,则返回空数组
第三节:Date类型
12
引用类型的值(对象)是引用类型的一个实例。
在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。它也通常被称为【类】,但是在js中,类这个称呼并不太妥当。
尽管在技术角度上将,js是一门面向对象的语言,但是严格意义上来讲,js并不具备面向对象语言所支持的类、接口、继承等基本属性。
引用类型也被称为【对象定义】,因为他们描述的是一类对象所具有的属性和方法。
第一节:Object类型
Object 可以说是js中使用最多的一个类型,尽管Object的实例没有多少功能,但是对于程序中存储和传输数据而言,却是非常理想的选择。
创建Object:
(1)通过new操作符创建:
var Obj=new Object(); Obj.a="a"; Obj.b=function (){ //......... }
(2)使用对象字面量创建:这种方式有封装的感觉,而且对于传输大量参数很适用
var Obj={ a:"a", b: function(){ //............ } }
(3)如果创建时花括号{}留空,则可以定义只包含其默认属性和方法的对象。
var Obj = {}; Obj.a = "a"; //......
注意:在通过字面量定义对象时,不会调用Object构造函数 (firefox 除外)
访问对象属性的2种方法:
(1)通过 . 操作符进行访问: Obj.a;
(2)通过 [] 进行访问: Obj[a];
以上两种方式没有任何区别,但是,通过[]访问的优点是可以使用变量,例如:
var Obj={ a:"a", b:"b", } var c="a"; alert( Obj[c] ) // a
第二节:Array 类型
1.用构造函数创建Array对象
(1)使用Array构造函数 : var a=new Array();
(2)如果预先知道数组中的项目的数量,则可以: var a=new Array( 20 ); 只不过这20项的值都是Undefined
(3)也可以直接向构造函数传递需要创建的项:var a=new Array( "red","blue" );
(4)直接给构造函数传递一个数值,会创建数值数量的空项目:var a=new Array( 3 )
(5)创建数组时也可以省略new操作符:var a= Array( "red","blue" );
2.用字面量创建Array对象
var a=["red","blue","black"];// ok var b=[]; //创建了一个空数组 var d=["red","blue",] //不要这样,不同浏览器解释不通,可能创建了2项或3项 var d=[,,,,,] //不要这样,不同浏览器解释不通,可能创建了5项或6项
3.数组的length属性
数组的length属性不是只读的,因此可以通过设置length来从数组的末尾添加或者移除项目:
var a=["red","blue","black"]; a.length=2; // 删除末尾的项目 alert(a[2])// undefined; var b=["red","blue","black"]; b.length=4; // 在末尾添加一个新项目,默认值未定义 blert(a[4])// undefined; var c=["red","blue","black"]; c[c.length]="orange"; // 在数组末尾直接插入项目,其值为orange c[10]="white"; //在数组位置10插入项目,其值为 white, 则4-9位置的项目,默认值都为undefined
4.转换方法
所有对象都具有 toString()、toLocaleString()、valueOf() 方法。
其中,调用数组的toString() 和 valueOf() 方法返回相同的值,这会在后台调用数组每一项的toString()方法,来拼接其最终的字符串。
var a=["red","blue","black"]; alert(a.toString())// 输出:red,blue,black; alert(a.valueOf())// 输出:red,blue,black;
join方法:数组的toString()等方法在输出时,默认用 , 进行分割,利用join可以指定分割符
var a=["red","blue","green"]; alert(a.join("/")); //输出 red/blue/green
5.栈方法和队列方法
(1)push() 接收任意数量的参数,把他们添加到数组的末尾,并返回新数组的长度。
(2)pop() 从数组的末尾移除项目并返回该项目,与push()一起可以模拟栈操作;
(3)shift() 可以移除数组第一个项目并返回该项目,与push()一起可以模拟队列操作
(4)unshift() 接收任意数量参数,在数组前端添加项目,并返回新数组的长度。
6.重排序方法
(1)reverse() 反转数组项目的顺序
(2)sort() 默认按升序排列数组项目,即最小的在最前面,为了排序,sort()会调用每个项目的toString()方法转为字符串,然后比较得到的字符串,已确定排序
// reverse() var a=[1,2,3,4,5]; var b=a.reverse(); alert(b); // 5,4,3,2,1 // sort() var a=[0,1,5,10,15] var b=a.sort(); alert(b) // 0,1,10,15,5
由此可见,sort()的默认排序并不智能,所幸,sort()可以接收一个比较函数作为参数,来实现自定义排序。
function compare(x,y){ if(x<y){//如果第一个参数位于第二个之前,则返回-1; return -1; }else if(x>y){//如果第一个参数位于第二个之后,则返回1; return 1; }else{//如果两个相等返回0; return 0; } //以上判断代码可以替换为更简单的一句 return y-x; }//定义一个比较函数,接收连个参数 var a=[0,1,5,10,15]; a.sort(compare); alert(a);//
reverse() 和 sort() 返回的都是修改后的数组
7.操作方法
(1)concat() 基于当前数组创建一个新的数组,会将接收到的数值或数组的每一项添加到新的数组中
var a=["red","blue"]; var b=a.concat("green","black"); alert(b) // red,blue,green,black var c=a.concat(["green","black"])//接受的参数是数组 alert(c) // red,blue,green,black
(2)slice() 能够基于当前数组创建新数组,接收1个或2个参数,即要返回的项目的起始和结束位置
var a=["red","blue","green","black"]; var b=a.slice(0,2); alert(b); // red,blue,green var c=a.slice(2); alert(c); // green,black
如果slice()参数中有负数,则用数组长度加上负数来确定其位置,如果开始位置大于结束位置,则返回空数组。
如果是负数,其实可以理解成从数组末尾开始查找,起始位置变成了结束位置,整个颠倒了..
(3)splice() 可以说是最强大的数组操作方法了,主要作用是向数组中部插入项目。使用方法有三种:
删除——可以删除任意项,只需指定两个参数:要删除的第一项位置,及要删除的项数;
插入——指定位置插入任意数量的项,至少提供3个参数:起始位置、0(要删除的项数为0即为插入操作)、要插入的项(可为多项)
替换——指定位置删除任意数量项目,并且插入任意数量项目,删除与插入的可以不相等。至少指定3个参数:起始位置、要删除的项目数、要插入的项目。
var a=["red","blue","green","black"]; var b=a.splice(0,1); var c=a.splice(1,0,"white","orange"); var d=a.splice(2,2,"white","orange") alert(b); // 删除第一项 blue,green,black alert(c); // 插入2项 red,blue,white,orange,green,black alert(d); // 替换2项 red,blue,green,white,orange
splice() 始终都会返回一个数组,包含被删除的项,如果没有被删除的,则返回空数组
第三节:Date类型
12
相关文章推荐
- 【每天学3章,一周掌握js】第4章:变量、作用域和内存问题
- Js从头学起(基本数据类型和引用类型的参数传递详细分析)
- JS的基础类型与引用类型
- 从一个简单例子来理解js引用类型指针的工作方式
- <Js>引用类型
- js 引用类型
- JS的基础类型与引用类型
- JS高级程序设计5-引用类型
- js基本数据类型和引用数据类型的区别
- js学习笔记:基本类型和引用类型
- 引用 JS判断浏览器类型方法
- js引用类型之Object类型
- JS引用类型之 Object类型
- JS的基础类型与引用类型
- js第五章引用类型
- 【JS】JS引用类型指针
- JS引用类型之——数组
- JS基本类型和引用类型的区别
- 第5章引用类型
- JavaScript高级程序设计——第5章:引用类型