一、综述
javascript中的分为两类:
简单类型:boolean,number,string
引用类型:object
其他:undefined代表变量没有初始化,null代表引用类型为空,typeof null 返回object
1)简单类型和引用类型的差异,和其他语言类似,如存储位置等
2)对于boolean,number,string这三种简单类型,javascript还为之提供了对应的基本包装类型,基本包装类型和引用类型的差别在于对象的生存周期,在读取模式下访问基本类型值时,后台对自动为之创建基本包装类型的对象,提供了相关方法可以操作基本类型,但是操作基本类型值的语句一经执行完毕,就会立即销毁新创建的基本包装类型。
3)函数也是对象,这点和java等语言不通,因此函数也可以拥有方法,可以作为函数形参等。
4)判断元素类型:使用typeof操作符(返回值可能是boolean,number,string,object,function,undefined),判断引用类型具体是哪一个对象的实例,使用isinstanceof
二、基本类型
var a=字面量 的形式来定义基本类型
1.boolen
1)具有两个字面量true,false(注意区分大小写)
2)将其他类型的值转换为布尔值,采用boolen(var);具体转换规则可以参见教材。如空字符串会转换为false
3)在if()等判断中,boolean转换时自动进行的。
2.number类型
1.有进制区别,有整数和浮点数之分。定义都适应var a=字面量 的形式
2.number.min_value代表最小数值,number.max_value代表最大数值,全局属性infinity代表正无穷,-infinity代表负无穷,nan代表非数,可以使用isnan()进行判定
3,将其他任何类型转换为数值类型可以用number()函数,将字符串转换为数值类型使用parseint(var,进制)或者parsefloat(var)
4,指定小数点位数可以使用num变量.tofixed(3),转换为指数类型表示可以使用num变量.toexponetial()
5,string类型
1,length属性:字符串长度
2,将某个值转换为字符串,可以对其调用tostring(),最简单的是加上一个空字符串
字符串相关操作方法:
1,字符串拼接,使用" ",也可用concat()方法
2,字符串切割,slice(),substr(),substring()方法,用法大同小异,掌握一种即可
5,查找子字符串:indexof()和lastindexof();另一个查找方法是search(),参数可以是字符串或者正则表达式
6,删除前后空格:trim()
7,大小写转换:tolowercase()和touppercase()
8,正则匹配:match()方法,调用效果和正则对象regexp的exec()方法相同
9,字符串替换:repalce(),第一个参数可以是字符串或者正则表达式,如果是字符窜,那么只替换第一个子字符串;如果是正则,则可以替换所有匹配的子字符串。
10,字符串比较:因为字符串是基本类型,因此可以使用"=="进行比较;‘===’是强等。此外还有一个方法是localcompare()方法,会根据字母表中的排序比较大小,返回正数,0或者负数。
11,字符串切割:split()。分隔符可以是子字符串,也可以是正则
12,字符串中访问特定字符:charat()或者charcodeat();返回对应的字符或者字符编码
三、引用类型
引用类型都是object或者其子类(js其实并没有子类这个概念?),js内置了一些引用类型来方便操作,如date,array,math,regexp等,这些类型都是全局对象window的属性。所有的object类型都有以下属性或方法
constuctor hasownproperty(propertyname) isprototypeof(object) propertyisenumerable(propertyname) tostring() valueof() tolocalstring()
1.object类型
感觉js中的object类型更像java中的hashmap或者python中的dict类型,也就是键值对的感觉
1)新建,两种方法,构造函数和字面量
//构造函数的方法 var person=new object(); person.name="bobo"; person.age=; //字面量的方法 var person={ name="bobo", age= }
2)属性可以加引号也可以不加;访问属性可以用点表示法,也可用方括号表示法
2.array类型
1.新建,两种方法,构造函数和字面量
//构造函数 var list=new array(); //字面量 ,,}
和java等语言中的数组不同的是,js数组的每一项可以保存不同类型的变量,大小也是可以动态调整的
检测一个变量是否是数组,可以使用array.isarray方法
2.相关属性和方法
1)数组长度:length,这个属性不是只读的,通过设置这个属性,可以从数组末尾移除项(设置值<实际长度);或者向数组中添加项
2)将数组转换为字符串:join("分割符"))
3)相关栈方法:pusth(),pop();shift(),push();unshift(),pop()通过这些方法,可以使用数组来模拟队列或者栈
4)数组排序:sort(),reverse()可以接收一个排序函数作为参数
5)数组合并:concat()
6)数组拆分:slice(),接收一个或者两个参数,即要返回项的开始位置和结束位置
7)功能强大的splice():可以用于删除,插入,替换数组中的某一项
8)查找数组中的元素:indexof()和lastindexof()
9)相关迭代方法,这些迭代方法的参数都是一个函数,
every(),对数组中的每一项运行给定函数,如果每一项都返回true,那么就返回true
filter(),对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
foreach(),对数组中的每一项运行给定函数,没有返回值
map(),对数组中的运行给定函数,返回每次调用该函数的结果组成的数组
some(),对数组中的每一项运行给定函数,如果该函数的任一项返回ture,则返回true
10)归并方法
reduce()和reduceright(),接受参数为函数function(prev,cur,index,array)
3,date类型
1.创建
var now=new date()
2,常用属性和方法
1)date.now()返回当前的日期和事件的毫秒数
2)getfullyear(),getmonth(),getdate(),getday(),gethours()等
4,math对象(有点类似于静态方法调用的感觉)
常用操作:
1)math.min()和math.max(),传入的参数用,分割。如果得到数组中的最大值,可以使用math.max.apply(math,arrayvar)的形式
2)math.ceil(),math.floor(),math.round()
3)math.random()
4)其他各种数学运算方法
5,regexp类型
1,创建,有字面量和构造函数两种方法
var express=/pattern/flags
var pattern=new regexp("[bc]at","i"),在使用构造函数创建的时候,因为参数是字符串,所以在需要的时候要进行双重转义
2.常用属性和方法
exec() 接受字符串参数,会返回匹配组相关信息,关于正则一向不是很明白,用到时候再看吧
test() 接受字符串参数,返回是否匹配的布尔值
6,function类型
在js中,函数也是对象,也和其他引用类型一样具有属性和方法,因此可以可以作为函数的形参,也可以作为函数的返回值。
1)在函数内部,有两个特殊的对象arguments和this,this和其他语言中的this一样,这里重点届时arguments
js中没有函数签名的概念,也不能实现传统意义上的重载。具体的说,js函数不在乎传递进来多少个参数,也不在乎是否通过命名的形参传入,在函数体内,可以通过arguments对象访问函数的参数数组。
arguments拥有一些属性:
callee:指向当前的函数对象
caller:指向调用当前函数的函数的引用
函数的属性和方法
1)length属性:代笔函数希望接收的参数的个数
2)prototype这个回头再说吧,对js的引用类型而言,prototype是保存它们所有实例方法的真正所在
函数方法
apply()和call(),可以在特定的作用于调用函数,接受的第一个参数是调用函数的对象,另一个是传入函数的参数。apply()使用数组传入参数,而call()则使用,来分割传入的参数
7,uri编码方法
1)encodeuri()主要用于对整个uri进行编码,与之对应的是decodeuri()
2)encodeuricomponent()主要用于对于附加在uri后面的querystring部分进行编码,与之对应的是decodeuricomponent()