搜索
查看: 59697|回复: 0
打印 上一主题 下一主题

JavaScript内置对象 [复制链接]

Rank: 1

go
楼主
发表于 2011-5-30 17:03:57 |只看该作者 |倒序浏览
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 等函数


分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0 支持支持0 反对反对0
回顶部