- 注册时间
- 2011-5-26
- 最后登录
- 2011-6-12
- 阅读权限
- 10
- 积分
- 11
- 精华
- 0
- 帖子
- 1
|
1.Array类
Array对象的三种创建形式:
第一种、var arr = new Array(10)
第二种、var arr = new Array(“one”,“two”,“three”)
第三种、var arr = [“one”,“two”,“three”]
由于js的数组的长度是可变的,所以第一种方法并不实用,第三种方法采用了数组的字面量方法创建数组对象完全等价于使用new方法创建数组对象的效果,而且可以简写成var arr = [],提高数组的灵活性。
1> push方法和pop方法
使数组实现了栈的数据结构,可以使用arr[arr.length] = newValuew方法向arr数组添加一个新的元素并置于数组尾,更好的方法是使用push
arr.push(newValue)
pop 方法则是实现与 push 相反的作用,返回数组的最后一个元素,并出栈。
arr.pop()
2> toString()、ValueOf()、toLocaleString()
把每一项都调用toString()方法,然后用逗号连接
var arr = [1,2,3,4,5];
document.write(arr.toString())//OutPut: 1,2,3,4,5
document.write(arr.ValueOf())//OutPut: 1,2,3,4,5
document.write(arr.toLocaleString())//OutPut: 1.00, 2.00, 3.00, 4.00, 5.00
3> join 将数组转换为一个字符串
arr.join(‘*’) // OutPut: 1*2*3*4*5
3> concat 和 slice
concat 方法,该方法将其参数们按序加入数组元素中。
var arr = [1,2,3,4,5];
arr = arr.concat(6,7,8); // OutPut: 1,2,3,4,5,6,7,8,9
注意, concat 并不修改数组对象本身,而是将数组元素与 concat 方法的数组元素合并后返回。所以需要给数组元素进行赋值运算才行。
slice 方法则是从数组对象中返回一个子数组。该子数组是从 slice 方法的第一个参数所指位置至第二个参数所指的位置。这是一个半开半闭区间 [a,b) 。
var arr1 = arr.slice(1,3);
alert(arr1); //output:2,3
4> shift 和 unshift
这两个方法实现了数组的队列数据结构。
shift ,他删除数组对象的第一个元素并返回:
var ele = arr.shift(); //OutPut: 1
unshift ,他将新元素插入数组对象的第一项
5> sort 和 reverse
sort 方法接收一个匿名函数(其实,它同样可以接收一个非匿名的函数,但是通常不推荐为此而创建一个这样的命名函数,除非该函数可重用)作为自己的排序的条件。
Object.prototype.toString = function(){
var str = '';
for(var item in this) {
str += item + ":" + this[item] + ",";
}
return str.length?str.substr(0,str.length-1):str;
};
var arr = [{key:3,value:"three"},{key:1,value:"one"},{key:2,value:"two"}];
arr.sort(function(a,b){
return a.key - b.key;
});
alert(arr);
//output:key:1,valuene,key:2,value:two,key:3,value:three
reverse 方法可以将数组对象反转。他和 sort 方法一样是修改数组对象内部元素顺序的。
arr.reverse(); // output : 5,4,3,2,1
6> splice
splice 方法,他是替换和删除数组对象元素的方法。根据参数的改变而拥有不同的实现结果。
splice(pos,count[,insertParams]);
pos 参数是删除元素的第一个项的位置, count 参数是删除元素的个数,当为0时则不删除, insertParams 则是参数列表,这些参数是即将插入的元素集合。插入的位置为 pos 。那么就出现了以下几种情况了。
1、 insertParams 忽略时,该方法就是删除数组元素
2、 当 count 参数为0时,该方法将只是将 insertParams 插入到 pos 位置
3、 当 count 参数不为0且 insertParams 不忽略时,该方法就是删除 pos 位置开始的 count 个元素,并替换 insertParams 参数集合。
2. Math类
Math 通常是一个“静态”类
Math.random 方法返回的是一个 0到1 之间的开区间浮点数,即 (0,1)
当我们需要取整的时候,对需要使用floor和ceil方法。前者使得 random 间接转换为前闭后开区间,而后者则是前开后闭区间,前者是向上取整,而后者则是向下取整。
需要一个取1-100的随机数,那么有如下的两种常用解决方案
方法一:Math.ceil(Math.random*100);
方法二:Math.floor(Math.random*100)+1;
Math.round 方法,他在取整时根据数值进行靠近取整 (四舍五入)
3. String类
创建一个字符串对象有以下几种方法:
方法一:var str = new String("Hello World");
方法二:var str = String("Hello World");
方法三:var str = "Hello World";
推荐大家使用最后一种方法,及字符串字面量。
String 对象有且只有一个属性 length ,返回字符串的长度 ,需要注意的是,JavaScript 是 unicode 编码,那么汉字和英文都当作一个字符长度来处理 。
return this.replace(/[^\u0000-\u00FF]/g,“**").length
1> indexOf 和 lastIndexOf 方法。
这两个方法从是从字符串中查找一个字符或字符子串,区别在于查找方向,前者是从位置 0 处开始查找,并返回第一个查找到的位置,后者从位置 length-1 处开始查找,并返回第一个查找到的位置。如果查找不到呢,返回 -1 。
2> charAt 和 charCodeAt
charAt 和 charCodeAt 方法根据一个位置索引来返回字符,其中前者是返回字符本身,后者返回字符编码。
var str = “北极博导前程信息技术有限公司”;
alert(str.charAt(5)); //output:程
alert(str.charCodeAt(5));//output:31243
3> slice , substr 和 substring
slice(start[,end]) 方法需要提供至少一个整数参数,作用是返回从 start 的位置开始到 end 位置的字符子串。当参数 start 为负数的时候他将从字符串尾部开始计算。当 end 没有指定时, end 即为字符串的结尾。如果为负数呢,他也要从字符串尾部开始计算。
var str = "rofessionalC#2008";
document.write(str.slice(0,5));//Profe
document.write(str.slice(-6));//C#2008
document.write(str.slice(-8,-2));//alC#20
substr 方法, substr(pos[,length]) 方法中,如果 pos 为负数,则与 slice 的负数解释相同, length 省略时与 slice 的 end 省略也相同。
substring 方法, substring(from[,to]);
从定义上就可以看到,后一个参数是一个位置,而非长度,因此他更像 slice ,但是与之有一点重要的区别,那就是 slice 方法不包含 to 位置。即是一个半开半闭区间。另一个区别是 substring 不支持负向位置,如果第一个参数为负数,那么就是从位置 0 开始。后一个位置如果是负数,则返回空串,如果第二个参数小于第一个参数,那么同样返回空串,但是如果相等呢,还是空串,因为这是一个半开半闭区间 [from,to) 。
document.write(str.substring(5,12));//ssional
4. Date类
创建一个日期对象可以有这些方法
方法一:var d = new Date(ms);//ms代表从1970.1.1凌晨0点的毫秒数
方法二:var d = new Date(year,month[,day,hour,minute,second,millisecond]);
方法三:var d = new Date(“localDateString”);//这里不是那么的通用。2011/5/5格式相对通用。
getDate/setDate。该方法操作的是天数,而非日期值。这个还是有点不大直观的。
getDay/setDay。该方法操作的是周数,序数从0开始,即周日的值是0。
getMonth/setMonth。该方法操作的是月数没有疑问,但是月数是从0开始。
getFullYear/setFullYear。我通常建议用这组方法来代替直观的getYear/setYear。
toDateString/toTimeString==输出日期的方法。但是并不是那么的好用。
5. 全局对象
编码、解码方法
encodeURI :可把字符串作为 URI 进行编码document.write(encodeURI("http://www.w3school.com.cn/My first/"))
//http://www.w3school.com.cn/My%20first/
encodeURIComponent() : 可把字符串作为 URI 组件进行编码。
document.write(encodeURIComponent("http://www.w3school.com.cn"))
//http%3A%2F%2Fwww.w3school.com.cn
decodeURI() : 可对 encodeURI() 函数编码过的 URI 进行解码。
decodeURIComponent() : 可对 encodeURIComponent() 函数编码的 URI 进行解码。
isNaN() 函数用于检查其参数是否是非数字值。如果是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果是其他值,则返回 false。
Number方法只能把真正的数字转换为数字
此外还有eval函数,settimeout,setInterval 等函数
|
|