JavaScripts学习日记——ECMAscript

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

JavaScripts学习日记——XML DTD Schema

JavaScripts学习日记——DOM SAX JAXP DEMO4J XPath

学习日记1

学习日记-2016.3.31

Python学习日记之记录

ajax --- 4.5 学习日记