首页 > 代码库 > JavaScripts学习日记——ECMAscript

JavaScripts学习日记——ECMAscript

1.Function对象

Function是一个很特殊的对象,特殊在该对象就像java中的方法一样,可以运行,可以传参数。

三种定义function对象的方法:

  1.function fun1(a,b){
           alert(a+b);        
     }

  2.var fun2 = new Function("a","b","alert(a+b);");//最后一个参数代表函数体

  3.var fun3 = function(a,b){
          alert(a+b);
      }  

函数调用时要注意的事项:

  1.js中函数的调用,跟java相比,只需要填对函数名称即可,不管参数怎么填都可以调用。(如参数个数不匹配)

  2.js中并没有重载,不过可以通过内置对象arguments(代表参数运行时的实际参数列表)来模拟重载的功能。

    2.1 使用它的.length属性获得实际参数的个数。

    2.2 使用arguments[n]来获得具体的某个参数。

  3.函数的返回。

    3.1 js中函数的返回也使用 return关键字

    3.2 跟java一样,return 还可以用作结束函数的运行.

  4.void()运算符的作用是拦截函数的返回值,使其返回undefined。

2.三大包装类的学习

三大包装对象  String Number(了解) Boolean(了解)

特性:js中 string number boolean 是伪类. 可以直接使用三个包装对象中的方法和属性.

String的使用

    var str = new String("hello");     //方法分为三类    //1.没有用的(开发中用的很少), 帮我们生成html代码的方法.        alert(str.anchor("abc"));        alert(str.big());        alert(str.sup());    //2.重要的        alert(str.charAt(1));//e  返回指定位置上的字符        alert(str.charCodeAt(1));// 返回对应字符的asc码值        alert(str.concat(" world"));// 连接字符串hello world        alert(str.indexOf("l"));//2  检索字符串        alert(str.lastIndexOf("l"));//3  从后向前搜索字符串。        alert(str.substring(0, 2));// he  不包含最后一个参数角标所在字符        alert(str.slice(-3, -1));// hel   支持负数,从右向左数.    //3.结合正则对象使用                   mactch            search            split            replace    </script>

 

3.typeof和instanceof

  typeof用于判断属于哪个原始类型(五种原始类型:number,String,undefined,Boolean,null)

  instanceof用于判断对象具体属于哪个类型。

4.Global对象(内置对象)

使用原因:get方式提交时,如果有中文的话,会转成其他码比如:   ?name=%E7%A2  ==> 是因为 HTTP协议 在传输中文时会出现问题.所以表单传输中文浏览器会自动转码,所以使用此对象的方法进行转码。

        encodeURI(URI) 对中文进行编码
        decodeURI(encodedURI) 对中文进行解码
        encodeURIComponent(uriComponent) 除了对中文编码 还对一些符号进行编码  . 当我们要传递的参数 使用了一些特殊符号时,使用该方法编码.
        decodeURIComponent(uriComponent)
        escape(s)  已经淘汰的方法.
        unescape(s)

  两种方法应用场景不同,如下所示:

//---------encodeURI decodeURI------------------------         var str = "http://www.baidu.com?name=传智";        var str2 = encodeURI(str);        alert(str2);        alert(decodeURI(str2));     //-------------encodeURIComponentdecodeURIComponent--------------------        var str_3 = "http://www.baidu.com?name=张:三/"        var str_4 = encodeURIComponent(str_3);        alert(str_4);        alert(decodeURIComponent(str_4));

5.Math对象

Math是内置对象 , 与Global的不同之处是, 在调用时 需要打出 "Math."前缀.

方法略

6.Array对象

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script type="text/javascript">    //Array对象    //创建方式1    var arr1 = [1,2,3]; //3    //创建方式2  构造函数中所有参数都作为 数组的元素.    var arr2 = new Array(1,2,3);     //alert(arr2.length);    //创建方式3  如果Array构造函数中,只填一个参数并且为数字.那么这个参数是规定数组的长度,而不是数组的元素.    var arr3 = new Array(3); // 创建一个长度为3 的空数组.        //Array当中的属性         //length属性 ==> 数组的长度.          //alert(arr3.length);    // Array的遍历        /* for(var i = 0 ; i< arr2.length ; i++){            alert(arr2[i]);        } */    //Array中的方法.        //concat 两个数组相加.        //join方法 返回一个字符串, 字符串内容是使用数组中各个元素相(按照给定参数)连接.        //alert(arr1.join("-"));         //---------------pop方法 push方法------------------        //使用这两个方法 模拟了一个栈的数据结构.(先进后出)        /* alert(arr1.pop());//3        alert(arr1.length);//2 */        // alert(arr1.push(4));//4        //------------------------reverse 将数组反转 ----------        /* arr1.reverse();         alert(arr1.join()); */         //---------------------sort 排序 ---------------------------         //注意!!: sort方法排序,默认是按照字符串比较规则来排序的.        /*  var arr4 = [8,2,3,9,1,100];         arr4.sort(_abc);         alert(arr4.join()); */         //比较器1         function abc(a,b){             if(a > b){                 return 1;             }else if(a == b){                 return 0;             }else{                 return -1;             }         }        //比较器2         function _abc(a,b){            return a-b;         }         //  js中数组的特性         //java中数组的特性,  规定是什么类型的数组,就只能装什么类型.只有一种类型.         //js中的数组特性1: js中的数组可以装任意类型,没有任何限制.         //js中的数组特性2: js中的数组,长度是随着下标变化的.用到多长就有多长.         var arr5 = [‘abc‘,123,1.14,true,null,undefined,new String(‘1213‘),new Function(‘a‘,‘b‘,‘alert(a+b)‘)];        /*  alert(arr5.length);//8         arr5[10] = "hahaha";         alert(arr5.length); //11         alert(arr5[9]);// undefined */                  //-----------------------面向对象的范畴,该现象不要研究.-----------------------------------          arr5[‘abc‘] = 100;         alert(arr5.length);//8         alert(arr5[‘abc‘]);                 </script></head><body></body></html>

7.Date对象

    1.new Date() 获取当前时间
    2.getFullYear() 获取年份
    3.getMonth() 获取月份注意 1月份结果为0
    4.getHours() 小时
    5.getDate() 日期
    6.getMinutes() 分钟
    7.getSeconds() 获取秒
    8.getTime()  获取毫秒值.
    9. toLocaleString () 获取本地的时间格式字符串.

    //例一: 打印出当前日期 格式如下.    // 2014年06月18日 15:40:30 星期三    function getCurrentDate(){        //1. 创建Date对象        var date = new Date(); //没有填入任何参数那么就是当前时间        //2. 获得当前年份        var year = date.getFullYear();        //3. 获得当前月份 js中月份是从0到11.         var month = date.getMonth()+1;         //4. 获得当前日        var day = date.getDate();        //5. 获得当前小时        var hour = date.getHours();        //6. 获得当前分钟        var min = date.getMinutes();        //7. 获得当前秒        var sec = date.getSeconds();        //8. 获得当前星期        var week = date.getDay(); //没有getWeek        // 2014年06月18日 15:40:30 星期三        return year+"年"+changeNum(month)+"月"+day+"日 "+hour+":"+min+":"+sec+" "+parseWeek(week);    }    //alert(getCurrentDate());        //解决 自动补齐成两位数字的方法        function changeNum(num){        if(num < 10){            return "0"+num;        }else{            return num;        }            }    //将数字 0~6 转换成 星期日到星期六        function parseWeek(week){        var arr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];        //             0      1      2      3 .............        return arr[week];    }            //例二: 获得 当前格林时间毫秒数, 并转换成 当前日期    var date = new Date();    var time = date.getTime()-10000000000;    //Date的构造方法,可以填入格林毫秒数    var date2 = new Date(time);    //    alert(date2.toLocaleString());

8.RegExp对象(正则)

在表单验证时使用该对象验证用户填入的字符串是否符合规则.
创建正则对象方式1  参数1 正则表达式  参数2 验证模式  g global / i 忽略大小写/m多行匹配. 参数2一般填写g就可以.
用户名 首字母必须是英文, 除了第一位其他只能是英文数字和_ . 长度最短不能少于6位 最长不能超过12位

<script type="text/javascript">    //RegExp对象    // 在表单验证时使用该对象验证用户填入的字符串是否符合规则.    //创建正则对象方式1  参数1 正则表达式  参数2 验证模式  g global / i 忽略大小写. 参数2一般填写g就可以.    // 用户名 首字母必须是英文, 除了第一位其他只能是英文数字和_ . 长度最短不能少于6位 最长不能超过12位    //----------------------------创建方式1    /* var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$","g");    //    //验证字符串    var str = "bc123";    alert(reg1.test(str));// true        //----------------------------创建方式2  /填写正则表达式/匹配模式;    var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/g;        alert(reg2.test(str));// true     */    //-------------------------------正则对象的方法-------------------        //test方法  ==>  测试一个字符串是否复合 正则规则. 返回值是true 和false.        //-------------------------String 中与正则结合的4个方法------------------.    // macth search split replace    var str = "hello world";        //alert(str.match(/o/g)); //查找字符串中 复合正则的 内容.    //alert(str.search(/h/g));// 0  查找字符串中符合正则表达式的内容位置    //alert(str.split(/o/g)); // 按照正则表达式对字符串进行切割. 返回数组;    alert(str.replace(/o/g, "s")); // hells wsrld  对字符串按照正则进行替换.        </script>

 

JavaScripts学习日记——ECMAscript