三,原始类
1> Array类型
特点:
松类型数组,可变长型数组。
也可以在初始化时指定长度,初始化数组元素时填充的都是undefined。
属性:
length:数组长度
方法:
添加:末尾添加一个元素colors[colors.length] = "black";末尾添加一组元素concat(array);指定位置添加splice(fromIndex,0,insertElement0,insertElement1,...)
删除:指定个数删除splice(fromIndex,deleteNum);指定位置删除slice(fromIndex, endIndex)
替换:先删除后添加splice(fromIndex,deleteNum,insertElement0,insertElement1...)
排序:反序reverse();指定排序模式sort(compareFunction)
模仿特定数据结构:栈方法push(),pop();队列方法push(),shift();队列反向操作unshift(),pop()
转字符串:toString(),valueOf()方法会返回以,间隔的元素字符串,可通过join("||")方法改变间隔符。
2> RegExp类型
初始化:
var expression = /pattern/flags;
属性:
global,ignoreCase,multiline(前三个是flags),lastIndex(搜索的开始位置),source(表达式字符串);
构造函数属性(会随着执行过程变化):
input(输入字串),lastMatch(最近一次匹配字串),lastParen(最近一次匹配字符),leftContext(匹配字串的左边字串),rightContext(匹配字串的右边字串),multiline,对应简写$_,$&,$+,$`,$',$*,简写需通过[]访问。
方法:
匹配:exec(string)。即使设置了全局匹配,也只返回第一个匹配项,不会返回所有匹配项的集合,要想获得下一个,需要再次调用该方法。因此,每次调用,lastIndex,lastMatch,lastParen,leftContext,rightContext都可能变化。
测试:test(string)。 测试是否匹配。
3>Date类型
初始化:
没有参数初始化,时间为当天时间。参数本需要为某时间距1970年的毫秒数。但Date.parse()和Date.UTC()可将特定格式的字符串日期或数字日期转换为该毫秒,并且当参数为这些字符串或数字时,构造函数会自动调用Date.parse()和Date.UTC()先将参数转化为毫秒。
因此可var someDate = new Date("May 25, 2004"),也可var someTime = new Date(2005, 4, 5, 17, 55,55)。注意,月份和小时是以0开始的。
转字符串:
toLocalString()会根据浏览器设置的地区设置返回日期时间;toString()会返回军用格式时间;还有toDateString(),toTimeString(),toLocaleDateString(),toLocaleTimeString(),toUTCString()方法用于输出时间字符串。但是各浏览器实现有所不同,推荐使用getFullYear()/Month/Date()/Day/Hours/Minutes/Seconds获取具体日期数字,自己订制输出格式。
比较:valueOf()则返回毫秒,因此Date可直接用比较操作符比较。
4> Math对象
方法:
最大最小:max(),min()
绝对值:abs()
平方根:sqrt()
次幂:pow(num,power)
舍入:ceil(),floor(),round() 分别为向上进位,向下舍位和四舍五入。
随机数:random()随机生成一个介于0到1的随机数。如在lowerValue-upperValue区间生成随机数:Math.floor( Math.random() * (upperValue - lowerValue +1) + lowerValue );
5> Function类型
属性:
arguments:是一个类数组对象,包含传入函数中的所有参数。它还包含一个callee的指针属性,反指向该函数,应尽量通过该指针实现递归,因为函数名是可变的。
this:是函数所处作用域。比如在全局作用于中调用函数时,this对象引用就是window。
length:表示函数希望接受的命名参数的个数。
方法:
调用:apply(),call()。需要传递作用域和函数所需的参数。apply()的参数可通过arguments或数组传递;call()的参数必须一个一个传。注意,作用域通常传this,但真正强大的是可借此扩大该函数的作用域。
6> 内置对象
特性:
Global对象,俗称“兜底儿对象”,不属于任何对象的属性和方法,都是它的。自身还有isNaN(),isFinite(),parseInt(),parseFloat()等方法,可随时随地调用。访问Global对象可通过window对象,因为浏览器把这些方法都实现到window中了。
方法:
URI编码方法:encodeURI(),encodeURIComponent(),区别是前者将空格替换为%20,后者会将任何非标准字符编码。因此前者用于整个URI,后者用于附加在现有URI的字符串使用。对应解码的是decodeURI(),decodeURIComponent()。escape()和unescape()已被废弃,因为只支持ASCII。
URL 只能使用 ASCII 字符集来通过因特网进行发送。由于 URL 常常会包含 ASCII 集合之外的字符,URL 必须转换为有效的 ASCII 格式。
URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符。URL 不能包含空格。URL 编码通常使用 + 来替换空格。
将字符串当代码一样调用:eval()。要小心,避免直接将用户输入直接调用,会造成代码注入。
7> 基本包装类型
特性:
为了便于操作基本类型变量,JavaScript还提供了三个特殊引用类型:Boolean, Number, String。每当读取一个基本类型值的时候,后台就会先创建一个对应的基本包装类型的对象,因此可以调用基本包装类型的方法。当操作完成后,该实例将被销毁。引用类型和基本包装类型的不同就在于对象的生存周期不同。
只有在必要时才显示的创建基本包装类型,因为显示创建后,typeof会返回object,并在转换为Boolean时都是true。
a> Boolean类型
b> Number类型,有toFixed(),toExponential(),toPrecision()方法可将数字转换为字符串。
c> String类型,提供方法:
获取字符:charAt()获取字符;charCodeAt()获取字符码
连接:concat(),通常用+
切割:按个数切割substr(),参数是beginIndex, nums;按位置切割slice(),substring(),参数是beginIndex, endIndex
搜索:从头搜indexOf();从尾搜lastIndexOf()。可以通过参数指定搜索的起始位置
大小写转换:toLowerCase(),toLocaleLowerCase(),toUpperCase(),toLocaleUpperCase()
比较:localeCompare()
支持正则表达式的方法有:
匹配match(expr),返回匹配元素的数组。
搜索search(expr),返回第一个匹配项的索引。
替换replace(expr),如需全局替换,则需要在正则表达式中添加/g。替换字串还可以由匹配出的字串组合而成,如$&(lastMatch),$'(leftContext),$`(rightContext),$n。如果不指定替换字串,还可以制定一个自定义函数function(match, pos, originalText),来具体定制。
分割split(),可通过正则表达式指定分隔符。