javascript学习——引用类型总结
2016-05-12 16:06
615 查看
Array类型:数组的每一项可以保存任何类型的数据,大小可以动态调整,即可以随着数据的添加和删除,自动增长和减小。
创建:1、使用Array构造函数:
2、使用数组字面量表示法:
Array常用操作:
检测数组: 使用方法Array.isArray(value): 该方法可以在全局执行环境中使用,也可以在局部执行环境中。而instanceof只能使用在全局执行环境中
转换方法:
toLocaleString():创建一个数组值以逗号分隔开的字符串,每次调用每一项的toLocaleString()方法。
toString():创建一个数组值用逗号分隔的字符串,每次调用每一项的toString()方法。
valueOf(): 返回一个数组。
join("divider"): 在调用toString()或者toLocaleString()方法时,可以用divider构建字符串。
栈方法:FILO
push(value):将value放入数组最后
pop(): 移除数组末尾最后一项,数组长度减1,返回移除的项
队列方法:FIFO
push(value):将value放入数组最后
shift():移除数组第一项,数组长度减一,将移除项返回。
重排序方法:
reverse(): 将数组倒序
sort(): 将数组升序排列,可以接收一个function,作为比较函数compare(value1,value2)。当value1在value2之前时,返回负数,value1和value2相等时返回0,value1在value2之后时返回正数
操作方法:
concat():创建一个新数组(并不是复制原数组地址),然后将接收到的参数添加到该副本的末尾。
slice():基于当前数组中的一个或多个项创建一个新数组,可以接受一个或两个参数。若是两个参数,则方法返回起始位置和结束为止之间的项,注意不包括结束为止的项。该方法也不影响原数组。
splice(): 会影响到原数组.
删除:两个参数,要删除的位置,和删除的项数。
2.插入:三个参数,起始位置,0,要添加的项
3.替换:三个参数,起始位置,替换项数,要替换的项
位置方法:
indexOf():返回参数所在的数组下标
indexOfRight(): 从数组右边开始记,返回参数所在的数组下标
迭代方法:不会改变原数组
every(function(item,index,array){}):若数组每一项都能使function返回true,则返回true
some(function(item,index,array){}):若数组中有某一些项能使function返回true,饭返回true
forEach(function(item,index,array){}):数组的每一项都执行function函数,无返回值
map(function(item,index,array){}):数组中的每一项都执行function函数,并返回包含全部结果的数组
fliter(function(item,index,array){}):数组中的每一项都执行function函数,并返回返回结果为true的项
Date类型:使用UTC开始经过的毫秒数保存时间
创建:new Date(): 自动获取当前时间
new Date(Date.parse("日期")):根据日期返回相应日期的毫秒数,但没有规定parse应该支持那种日期格式。
new Date(Date.UTC(year,month,day,hour,min,sec)); 需要注意的是month是从0开始计算,hour的时间范围是0-23
常用方法:
日期格式化方法:
toDateString(): 以特定格式显示星期几、日月年
toTimeString(): 以特定格式显示时分秒和时区
toLocaleDateString(): 以特定地区的格式显示星期几、日月年——格式和浏览器有关
toLocaleTimeString(): 以特定地区的格式显示时分秒和时区——格式和浏览器有关
toUTCString(): 以特定于实现的格式完整的UTC日期
RegExp类型:支持正则表达式,用于模式匹配
创建: new RegExp("pattern","flag");
其中:pattern 是要匹配的模式,flag是匹配模式(g:全局模式 i:不区分大小写 m:表示多行)
实例属性:可以获取pattern的各种信息。
global:boolean,是否设置了g
ignoreCase:boolean,是否设置了i
lastIndex:int,表示开始搜索的下一个匹配项的字符位置,从0开始
multiline:boolean,表示是否设置了m
source:pattern的值
实例方法:主要有exec()和text()
exec():参数为需要应用模式的字符串,然后返回包含第一个匹配项信息的数组,若无克匹配的,返回null,返回值为Array,包含两个属性input(为应用的字符串)和index(匹配项在字符串中的位置)
在不设置g的时候,在同一个字符串上调用exec(),将始终返回第一个匹配项的信息。
在设置g的时候,在同一个字符串上调用exec(),会继续查找新匹配项。
test(): 接收一个字符串参数,在模式与该参数匹配的情况下返回true,否则返回false
Function类型:函数实际上是一个变量,每个函数都是Function类型的一个实例,都具有属性和方法。
声明:
需要注意的是,js的函数没有重载,如果定义了两个名字一样的函数,则第
c39d
二个函数会覆盖第一个。
函数可以作为值,也可以作为结果。一种常用的应用是从一个函数中返回另一个函数
函数内部属性:argument、this、caller
argument:传入函数的参数,是一个Array,有一个属性是callee,表示拥有这个argument对象的函数。经典用法是解除函数的耦合性。使得函数可以任何的该换名字。
this:函数据以执行的环境变量。在全局环境下是this。
caller: ECMAScript5规定的属性,保存着当前函数的函数引用,如果在全局作用域中调用,返回null。
函数属性和方法:
属性:length、prototype。
length:表示希望接收命名参数的个数。
prototype:之后祥写。prototype是不可枚举的、不可使用for-in枚举。
方法:apply(),call().作用一样,只不过接收的参数不一样。方法都是在特定作用域中调用函数,实际上就是设置this的值。
apply(): 接收作用域和参数数组
call(): 接收作用域、枚举全部的参数
最典型的应用是扩充函数的作用域
bind() :创建另一个函数实例,并且把环境绑定到该函数上
创建:1、使用Array构造函数:
var persons1 = new Array(); //创建一个空数组 var persons2 = new Array(3); //创建一个长度为3的数组,分别存放了三个undefined var persons3 = new Array("xiaoming"); //创建了一个长度为1的数组,内容为字符串“xiaoming”其中可以省略new关键字。
2、使用数组字面量表示法:
var person1 = ["xiaoming", "xiaohong","xiaogang"]; //创建一个长度为3的数组,分别存放三个字符串 var person2 = [];//创建了一个空数组
Array常用操作:
检测数组: 使用方法Array.isArray(value): 该方法可以在全局执行环境中使用,也可以在局部执行环境中。而instanceof只能使用在全局执行环境中
转换方法:
toLocaleString():创建一个数组值以逗号分隔开的字符串,每次调用每一项的toLocaleString()方法。
toString():创建一个数组值用逗号分隔的字符串,每次调用每一项的toString()方法。
valueOf(): 返回一个数组。
join("divider"): 在调用toString()或者toLocaleString()方法时,可以用divider构建字符串。
栈方法:FILO
push(value):将value放入数组最后
pop(): 移除数组末尾最后一项,数组长度减1,返回移除的项
队列方法:FIFO
push(value):将value放入数组最后
shift():移除数组第一项,数组长度减一,将移除项返回。
重排序方法:
reverse(): 将数组倒序
sort(): 将数组升序排列,可以接收一个function,作为比较函数compare(value1,value2)。当value1在value2之前时,返回负数,value1和value2相等时返回0,value1在value2之后时返回正数
操作方法:
concat():创建一个新数组(并不是复制原数组地址),然后将接收到的参数添加到该副本的末尾。
slice():基于当前数组中的一个或多个项创建一个新数组,可以接受一个或两个参数。若是两个参数,则方法返回起始位置和结束为止之间的项,注意不包括结束为止的项。该方法也不影响原数组。
splice(): 会影响到原数组.
删除:两个参数,要删除的位置,和删除的项数。
var colors = ["red","green","blue"]; var remove = colors.splice(0,2); alert(colors);// 返回blue alert(remove);//返回red,green
2.插入:三个参数,起始位置,0,要添加的项
var colors = ["red","green","blue"]; var insert = colors.splice(1,0,["yellow","pink"]); alert(colors);//red ,yellow, pink,green,blue alert(insert);//空
3.替换:三个参数,起始位置,替换项数,要替换的项
var colors = ["red","green","blue"]; var replace = colors.splice(1,2,["yellow","pink"]); alert(colors);//red ,yellow, pink alert(insert);//green,blue
位置方法:
indexOf():返回参数所在的数组下标
indexOfRight(): 从数组右边开始记,返回参数所在的数组下标
迭代方法:不会改变原数组
every(function(item,index,array){}):若数组每一项都能使function返回true,则返回true
some(function(item,index,array){}):若数组中有某一些项能使function返回true,饭返回true
forEach(function(item,index,array){}):数组的每一项都执行function函数,无返回值
map(function(item,index,array){}):数组中的每一项都执行function函数,并返回包含全部结果的数组
fliter(function(item,index,array){}):数组中的每一项都执行function函数,并返回返回结果为true的项
var numbers = [1,2,3,4,5,4,3,2,1]; var everynumber = numbers.every(function(item,index,array){return (item > 2);}); //false var somenumber = numbers.some(function(item,index,array){return( item > 2);}); //true var fliternumber = numbers.fliter(function(item,index,array){return (item > 2)}); // 3,4,5,4,3 var mapnumber = numbers.map(function(item,index,array){return ( item *2)}); // 2,4,6,8,10,8,6,4,2
Date类型:使用UTC开始经过的毫秒数保存时间
创建:new Date(): 自动获取当前时间
new Date(Date.parse("日期")):根据日期返回相应日期的毫秒数,但没有规定parse应该支持那种日期格式。
new Date(Date.UTC(year,month,day,hour,min,sec)); 需要注意的是month是从0开始计算,hour的时间范围是0-23
常用方法:
var start = Date.now();//获取当前时间,需要浏览器支持EMCAScript var start =+ new Date();//获取当前时间戳,适用于不支持EMCAScript的浏览器<pre name="code" class="javascript">/* Date 的valueOf()方法直接返回时间的毫秒值,因此可以用于比较日期的大小 */ var date1 = new Date(2016,0,14); var date2 = new Date(2016,4,13); alert(date1 > date2); // false alert函数会在后台直接调用valueOf()方法。
日期格式化方法:
toDateString(): 以特定格式显示星期几、日月年
toTimeString(): 以特定格式显示时分秒和时区
toLocaleDateString(): 以特定地区的格式显示星期几、日月年——格式和浏览器有关
toLocaleTimeString(): 以特定地区的格式显示时分秒和时区——格式和浏览器有关
toUTCString(): 以特定于实现的格式完整的UTC日期
RegExp类型:支持正则表达式,用于模式匹配
创建: new RegExp("pattern","flag");
其中:pattern 是要匹配的模式,flag是匹配模式(g:全局模式 i:不区分大小写 m:表示多行)
var patttern1 = new RegExp("[bc]at","g");//匹配以bc开头,at结尾的字符串。注意:如果模式中有元字符([ ,{, \, ^, $,|,),(,?,*,+,.,]),则需要加转义字符 \
实例属性:可以获取pattern的各种信息。
global:boolean,是否设置了g
ignoreCase:boolean,是否设置了i
lastIndex:int,表示开始搜索的下一个匹配项的字符位置,从0开始
multiline:boolean,表示是否设置了m
source:pattern的值
var pattern = new RegExp("\\[bc\]at","i"); alert(pattern.global); //false alert(pattern.ignoreCase);//true alert(pattern.lastIndex); //0 alert(pattern.mulitiline);//false alert(pattern.source);// "\[bc\]at"
实例方法:主要有exec()和text()
exec():参数为需要应用模式的字符串,然后返回包含第一个匹配项信息的数组,若无克匹配的,返回null,返回值为Array,包含两个属性input(为应用的字符串)和index(匹配项在字符串中的位置)
在不设置g的时候,在同一个字符串上调用exec(),将始终返回第一个匹配项的信息。
在设置g的时候,在同一个字符串上调用exec(),会继续查找新匹配项。
test(): 接收一个字符串参数,在模式与该参数匹配的情况下返回true,否则返回false
var text = "000-0000-00"; var pattern = new RegExp("/\d{3}-\d{4}-\d{2}","g"); if(pattern.test(text)){ alert(true);}
Function类型:函数实际上是一个变量,每个函数都是Function类型的一个实例,都具有属性和方法。
声明:
function sum(value1,value2){ return value1+value2; } var sum = function (value1,value2){ return value1 + value2;} //该方法可以无函数名,因为可以直接通过sum引用该函数 var sum = new Function("value1","value2","return value1+value2"); //不推荐,因为要2次解析
需要注意的是,js的函数没有重载,如果定义了两个名字一样的函数,则第
c39d
二个函数会覆盖第一个。
函数可以作为值,也可以作为结果。一种常用的应用是从一个函数中返回另一个函数
function createComparisonFunction(propertyName){ return function(object1,object2){ var ob1 = object1[propertyName]; var ob2 = object2[propertyName]; if(ob1> ob2){ return -1;} else if(ob2 == ob2){return 0;} else{return 1;} }; } var data = [{name:"xiaoming",age:28},{name:"xiaohong",age:24}]; data.sort(createComparisonFunction("name")); alert(data[0].name); // xiaohong data.sort(createComparisonFunction("age")); alert(data[0].age);//24
函数内部属性:argument、this、caller
argument:传入函数的参数,是一个Array,有一个属性是callee,表示拥有这个argument对象的函数。经典用法是解除函数的耦合性。使得函数可以任何的该换名字。
function factorial(num){ if(num == 0) {return 0;} else{ return num * argument.callee(num-1);} } var trueFactorial = factorial; alert(trueFactorial);// 120
this:函数据以执行的环境变量。在全局环境下是this。
caller: ECMAScript5规定的属性,保存着当前函数的函数引用,如果在全局作用域中调用,返回null。
function outer(){ inner(); } function inner(){ alert(inner.caller); } outer(); //返回outer的函数体
函数属性和方法:
属性:length、prototype。
length:表示希望接收命名参数的个数。
prototype:之后祥写。prototype是不可枚举的、不可使用for-in枚举。
方法:apply(),call().作用一样,只不过接收的参数不一样。方法都是在特定作用域中调用函数,实际上就是设置this的值。
apply(): 接收作用域和参数数组
call(): 接收作用域、枚举全部的参数
function sum(num1,num2){ return num1+num2;} function callSum1(num1,num2){return sum.apply(this, arguments);} function callSum2(num1,num2){ return sum.call(this,num1,num2);} alert(callSum1(10,10));// 20 alert(callSum2(10,10));//20
最典型的应用是扩充函数的作用域
window.color = "red"; var = {color: "yellow"}; function sayColor(){ alert(this.color);} sayColor();// red sayColor.call(this);//red sayColor.call(window);//red sayColor.call(o);//yellow
bind() :创建另一个函数实例,并且把环境绑定到该函数上
window.color = "red"; var = {color: "yellow"}; function sayColor(){ alert(this.color);} var sayColor2 = sayColor.bind(o); sayColor2(); //yellow
相关文章推荐
- JSON 与JSONP
- js--document对象以及方法
- 原生JS带动画手风琴下拉
- 前端开发中最常用的JS代码片段(二)
- JavaScript的模块化开发框架Sea.js上手指南
- js判断是否手机浏览页面
- JavaScript计算字段在数据库中的长度
- JS移动客户端--触屏滑动事件
- JavaScript 基础(三) 对象 条件判断
- 深入理解JavaScript类数组
- 使用javascript方式获取多说评论插件的文章评论数,转发数
- js替换字符串replace()函数的用法
- JavaScript代码-创建交互网页
- javascript数组array
- JS中引用EL表达式
- js中定时器使用的小问题
- javascript多线程--web workers实现线程间数据交互的小测试
- JavaScript实现几个文本框同步
- JavaScript进阶篇_window对象
- JS中数组去重及求量数组中的相同字符个数