javascript学习之入门(三)

/**
*@author sinux
*@date 2013/9/4
*@time 10:00 am
*@Content javascript基础入门(三)
*
*/
二.对象基础
0.对象的概念及组成,有面向对象语言经验的人都了解,不赘述了。
1.与java不同的是js具有真正的Array类
  需要注意的几点是:
  0.var aColors=new Array("red","blue","white");
    var aColors=["red","blue","blue"]
    //后者虽然没有明确使用Array类,但[]暗示了使用Array对象存储相应的值
  1.Array对象覆盖了toString()方法和valueOf()方法。
  覆盖之后的方法将数组中的各个元素顺次以字符串的格式打出来,中间用逗号间隔。也就意味着这是一种可以将数组转换为字符串的方式。
  2.Array对象还具有join()方法,该方法与上述toString类似,只不过其具有一个参数,该参数决定转换成的字符串中原数组元素之间如何间隔。如:
  var aColors=new Array("red","blue","white");
  alert(aColors.join(“ and ”);//输出"red and blue and white"
 
  3.那么String对象是否有将字符串转换为数组的方法呢?答案是肯定的.
   var sTest="123456";
alert(sTest.split("").toString());//这里以空字符串声明为分隔符,原字符串被分解为“1,2,3,4,5,6”
  4.添加新元素concat();
  5.slice()方法接受一到两个参数,用于提取子串。参数表示截取的起止位置。如果仅有一个参数,则以此为开始位置向后截止到末尾。
  具体函数参考http://www.w3school.com.cn/js/jsref_slice.asp
  6.利用Array对象的方法搭配实现栈和队列的数据结构
     a.实现栈
     var stack=new Array();
     stack.push("1");
     stack.push("2"):
     stack.push("3");
     alertstack.toString());//outputs "1,2,3"
     var popItem=stack.pop();
     alert(popItem);//outputs "3"
     alert(stack.toString());//outputs "1,2"
     由以上例子可见,Array对象所实现的栈默认事宜数组的末尾元素为栈顶的。
    
     b.实现队列
     var queue=["1","2","3"];
     queue.push("4");
     alert(queue.toString());  //outputs "1,2,3,4"
     var sNextNum=queue.shift();
     alert(sNextNum);          //outputs "1"
     alert(queue.toString());  //outputs "2,3,4,"
     //不难发现,该功能的实现主要是借助shift()与push()方法的联合使用。其中push()方法相当于入队操作,shift()相当于出队操作。shift()方法的作用是删除数组第一个元素并以此作为方法返回值。
     作为参考,Array对象具有unshift()方法,该方法实现将某一数据项放到数组首位置,并将其余元素后移一位。可以理解为从头塞入一个数据,正好与push()方向相对。
  7.排序
  任何数组都离不开排序。本对象中与之相关的两种方法为:
    a.reverse() 没错,反转!!123->321
    b.sort()    将数组中的元素默认升序排序(依照字符串的比较规则)
    值得注意的是,sort()是将各元素依照字符转大小的比较规则进行比较的,而不管其是否是字符串。这就要求运用sort()方法前,了解其原理,如:数组“1,29,25,3”如果直接就运用sort()排序,结果是"1,25,29,3"。那么如何实现对数字型数组的快速排序呢?
    新手斗胆分析一下,并尝试解决一下哈~
    首先,sort()有木有可能可以附带参数呢?如果都是封装的我们也还真没办法简单的利用好sort()这个方法。搜了下W3C上讲到,sort()可以带一个参数,该参数为某一方法(函数)的引用,该方法应该有两个形参来对应相互比较的两个数据项,同时根据规则返回正值,负值和0,返回值决定了整个数组的排序方向,我们可以根据需要进行设定。那么自然而然想到的方法便是,如果原来数组中数据均为Number类型,就很简单了:
    var sortTest=new Array(1,25,20,5);
    sortTest.sort();
    alert(sortTest.toString());//1,20,25,5
    sortTest.sort(sortFuc);//调用有参sort
    alert(sortTest.toString());//1,5,20,25
    function sortFuc(a,b){
    return a-b;//当然,前提是两者都是数字类型的,而且是要升序排序
    }
   
   8.splice()这个方法略微复杂一些,不过觉得挺有用处的。我们可以用它实现插入,替换,删除以及三种功能的组合
var sortTest=new Array(1,25,20,5);
sortTest.splice(1,1);//从位置1开始删除1个元素
alert(sortTest.toString());
sortTest.splice(1,0,0,0,0);//从位置1处开始删除0个元素,然后顺次插入0,0,0;其实在这里也就是在位置1处开始插入0,0,0;(当然后面可以写很多的)
alert(sortTest.toString());
sortTest.splice(1,3);//删除从位置1处开始往后的三个元素
alert(sortTest.toString());
sortTest.splice(1,1,100);//将位置1处的元素替换为100
alert(sortTest.toString());

2.Date类
/*关于Date类,直接引用jianshaohui的文章  http://www.cnblogs.com/jianshao810/archive/2010/09/09/1821861.html*/
Date 对象用于处理日期和时间。
创建 Date 对象的语法:
var myDate=new Date()
Date 对象会自动把当前日期和时间保存为其初始值。
参数形式有以下5种: 

   new Date("month dd,yyyy hh:mm:ss");
   new Date("month dd,yyyy");
   new Date(yyyy,mth,dd,hh,mm,ss);
   new Date(yyyy,mth,dd);
   new Date(ms);

注意最后一种形式,参数表示的是需要创建的时间和GMT时间1970年1月1日之间相差的毫秒数。各种函数的含义如下:

month:用英文表示月份名称,从January到December

mth:用整数表示月份,从(1月)到11(12月)

dd:表示一个月中的第几天,从1到31

yyyy:四位数表示的年份

hh:小时数,从0(午夜)到23(晚11点)

mm:分钟数,从0到59的整数

ss:秒数,从0到59的整数

ms:毫秒数,为大于等于0的整数

如:

new Date("January 12,2006 22:19:35");

new Date("January 12,2006");

new Date(2006,0,12,22,19,35);

new Date(2006,0,12);

new Date(1137075575000);

 

Date() 返回当日的日期和时间。
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
toSource() 返回该对象的源代码。
toString() 把 Date 对象转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 请使用 toUTCString() 方法代替。 1 3
toUTCString() 根据世界时,把 Date 对象转换为字符串。 
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
UTC() 根据世界时返回 1997 年 1 月 1 日 到指定日期的毫秒数。
valueOf() 返回 Date 对象的原始值。
var objDate=new Date([arguments list]);
3.内置对象
   0.Global对象
实际上,js中不允许有独立于对象的方法存在,那么我们之前直接用的parseInt(),parseFloat(),isNaN(),isFinite()等方法又是怎么回事呢?其实这些方法都是一个隐含的Global对象的方法,该对象是不用也无法声明的。
Global对象还有其他方法如:encodeURI()和ancodeURIComponent();功能比较突出的是eval()方法(这是人家说的),但是我目前不知道它到底有多大的用处。
   当然除了方法,该对象也有诸多属性,如:Funciton、Array、object undefined等等。
   1.Math对象
   哪里都离不开数学,js中必然少不了Math。
   主要属性:自然对数E,PI,LOG2E,LOGE,LN2等
   主要方法:abs(),max(),min()以及一些舍入处理方法ceil(),floor(),round(),与指数相关的exp(),log(),pow(),sqrt(),三角函数形如:sin(),cos(),tan(),acos(),asin(),atan(),atan2(y,x),当然也离不开随机函数random()它返回(0,1)之间的随机数

posted @ 2013-09-04 22:37  sinux  阅读(296)  评论(0编辑  收藏  举报