7-包装器函数+Match对象+Date对象+note

来源:互联网 发布:龙泉刀剑章氏有淘宝吗 编辑:程序博客网 时间:2024/05/16 18:03
1. 基本包装类型
    1)为了便于操作基本类型值,ECMAScript提供了3个特殊的引用类Boolean, Number, String
       每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型对象,从而可以使我们调用一些方法操作这些数据。
            var s = "briup";
            s.substring(2);
       后台会自动完成以下操作:
            a.创建String类型的一个实例
            b.在实例上调用指定的方法
            c.销毁这个实例
    2)基本包装类型的实例调用typeof返回"object",从而所有基本包装类型对象都会被转换为布尔类型的true.
        Object构造函数会像工厂方法一些,根据传入的值的类型返回相应基本包装类型的实例
        var obj = new Object("briup");        //obj 类型为String包装类型
        console.log(obj instanceof String);
        使用new调用基本包装类型的构造函数,与直接调用同名的转换函数不一样
            var s = "11";
            var s1 = Number(s);        //转型函数 number类型
            var s2 = new Number(s);    //构造函数 object类型
    3) Boolean,Number,不建议直接使用这两种类型
    4) String
        1.常见函数和属性
            length        
                属性,获取字符串的字符数量
            charAt(i)    
                返回给定位置的字符 i为索引
            charCodeAt()    
                返回给定位置的字符的字符编码
                var s = "helloworld";
                s.charAt(1);       //e
                s.charCodeAt(1); //101
            concat()    不改变原字符串
                将一个或多个字符串拼接起来,返回拼接得到的新字符串,但是大多使用"+"拼接
            slice()     截取    都不改变字符串
                (开始位置,返回字符后一个字符位置)
            substr()    
                (开始位置,返回字符个数)
            substring()    
                (开始位置,返回字符后一个字符位置)
                var s = "helloworld";
                s.slice(3,7);     //lowo
                s.substr(3,7);     //loworld
                s.substring(3,7);//lowo
                s                 //helloworld 不改变原值大小
            indexOf(); 参数为字符串中的字符     无参数返回-1
                从前往后查找指定字符所在位置
            lastIndexOf();     无参数返回-1
                从后往前查找字符串所在位置,可以有第二个参数,代表从字符串中哪个位置开始查找。
            trim(); 修剪
                删除前置以及后置中的所有空格,返回结果
                var s = " hello world ";
                console.log("|"+s.trim()+"|");    //|hello world|
            toLowerCase()    :转换为小写
            toUpperCase()    :转换为大写

        2.Javascript中String对正则表达式的支持      
            search()
                参数为一个正则表达式。如果参数不为正则表达式,则先通过RegExp将其转换为构造函数。不支持全局检索,返回第一个与之匹配的子串的位置,如果找不到匹配的子串,返回-1。
                "JavaScript".search(/script/i); //返回4
            replace()
                用以执行检索和替换操作。第一个参数是正则表达式,第二个参数是要替换的字符串。
                text.replace(/javascript/gi,"JavaScript"); //不区分大小写将所有javascript转换为JavaScript
            match()   
                最常用的正则表达式方法,参数为正则表达式。返回由匹配结果组成的数组。
                当正则表达式中没有g修饰符的时候,就不是全局匹配。这时,数组的第一个元素就为匹配的字符串,剩余的元素则是由正则表达式中用圆括号括起来的子表达式。如果该正则表达式设置为修饰符g,则该方法返回的数组包含字符串中所有匹配结果。
                "1 plus 2 equals 3".match(/\d+/g) //返回["1","2","3"]

                var url = /(\w+):\/\/([\w.]+)\/(\S*)/;
                var text = "visit my blog at http://www.briup.com/~ee";
                var result = text.match(url);
                if(result!=null){
                    var fullurl = result[0];
                    var protocol = result[1];
                    var host = result[2];
                    var path = result[3];
                }
            split()
                参数可以为正则表达式
                "1, 2, 3, 4, 5".split(/\s*,\s*/); //["1","2","3","4","5"] 允许分隔符左右两边留有空白
        //匹配前后带有0个或多个空格的,逗号



2. Math对象
    1)常用方法
        1.比较方法
            Math.min()    求一组数中的最小值
            Math.max()    求一组数中的最大值
            Math.min(1,2,19,8,6);    //1
        2.将小数值舍入为整数的几个方法:
            Math.ceil()  向上舍入
            Math.floor() 向下舍入
            Math.round() 四舍五入
            console.log(Math.ceil(12.41));    //13
            console.log(Math.floor(12.41));    //12
            console.log(Math.round(12.3));    //12
            console.log(Math.round(12.5));    //13
        3.随机数
            Math.random() 返回大于0小于1的一个随机数
    2)其他方法:(了解即可,即用即查)
        abs(num)        返回num绝对值
        exp(num)        返回Math.E的num次幂
        log(num)        返回num的自然对数
        pow(num,power)    返回num的power次幂
        sqrt(num)        返回num的平方根
        scos(x)            返回x的反余弦值
        asin(x)            返回x的反正弦值
        atan(x)            返回x的反正切值
        atan2(y,x)        返回y/x的反正切值
        cos(x)            返回x的余弦值
        sin(x)            返回x的正弦值
        tan(x)            返回x的正切值
3. Date函数
    var now = new Date(); 获取当前日期对象
    now对象->Date.prototype->Object.prototype

    将一个字符串转换为Date对象的写法:
        var str = "2012-12-12";
        var date = new Date(str);          //字符串转换为Date对象
        document.write(date.getFullYear());    //然后就可以使用Date对象的方法输出年份了
    Date.getDate()
        返回是日期对象中月份中的几号。
        var date = new Date();          //2012-12-19
        document.write(date.getDate());    //返回  19 是19号
    Date.getDay()  
        返回日期中的星期几  星期天0-星期6
        var date = new Date();
        document.write(date.getDay());    //3 星期3

    Date.getFulYead()  
        返回年份  如2012。
        var date = new Date();
        document.write(date.getFullYear());  //返回2012,2012年
    Date.getHours()  
        返回日期中的小时,几点了,0-23
        var date = new Date();
        document.write(date.getHours());  //返回23,晚上11点
    Date.getMilliseconds()  
        返回日期中的毫秒数
        var date = new Date();
        document.write(date.getMilliseconds());  //返回27  当前是xx年,xx月,xx点,xx分,xx秒,xx毫秒的毫秒

    Date.getMinutes()    
        返回日期中的分钟数  0-59
        var date = new Date();
        document.write(date.getMinutes());  //2012-12-19 23:22  返回22,12点22分

    Date.getMonth()   
       返回日期中的月份数,返回值0(1月)-11(12月)
        var date = new Date();
        document.write(date.getMonth());  //2012-12-19  此处返回11,注意此处与通常理解有些偏差,1月份返回是0,12月返回是11

    Date.getSeconds()    
        返回一个日期的描述
        var date = new Date();
        document.write(date.getSeconds());·//返回34,2012-12-19 23:27:34  27分34秒

    Date.getTime()      
        将一个日期对象以毫秒形式返回
        var date = new Date();
        document.write(date.getTime());  //返回1355930928466  返回值是1970-01-01 午夜到当前时间的毫秒数。

    Date.getTimezoneOffset()   
        GMT时间与本地时间差,用分钟表示
        var date = new Date();
        document.write(date.getTimezoneOffset());  //返回-480  实际上这个函数获取的是javascript运行于哪个时区。单位是分钟。

    Date.getUTCDate()    
        返回Date对象中的日期值,(全球时间)
        var date = new Date();
        document.write(date.getUTCDate());  //返回19  19号

    Date.getUTCDay()    
        返回Date对象中的星期几,(全球时间)
        var date = new Date();
        document.write(date.getUTCDay());  //返回3  星期3

    Date.getUTCFullYear()  
        返回Date中的年份,4位,如2012,(全球时间)
        var date = new Date();
        document.write(date.getUTCFullYear());  //返回2012

    Date.getUTCHours()    
        返回Date对象中的小时数,就是现在是几点,终于有一个跟getHours()不同了,应该是时差关系,返回的是全球时间里的。
        var date = new Date();
        document.write(date.getUTCHours());  //现在北京时间是2012-12-19 23:44,但是返回的是15,也就是全球时间中的小时数。

    Date.getUTCMilliserconds()  
        返回Date对象中的毫秒数,(全球时间)
        var date = new Date();
        document.write(date.getMilliseconds());  //返回全球时间中的毫秒数

    Date.getUTCMinutes()    
        返回Date对象中的分钟数,(全球时间)
        var date = new Date();
        document.write(date.getMinutes());  //2012-12-19 23:49  返回49,注意是全球时间,其实全球时间应该就小时不同而已吧。

    Date.getUTCMonth()      
        返回Date对象中月份值,(全球时间)
        var date = new Date();
        document.write(date.getMonth());  //2012-12-19  返回11,0(1月份)-11(12月份)  

    Date.getUTCSeconds()    
        返回Date对象中的秒数值
        var date = new Date();
        document.write(date.getSeconds());  //返回秒数值 返回33

    Date.getYear()    
        返回Date对象中的年份值减去1900
        var date = new Date();
        document.write(date.getYear());  //2012-12-19  返回112 (2012-1900)

    Date.now()    
        静态方法  //返回1970-01-01午夜到现在的时间间隔,用毫秒表述
    document.write(Date.now());  //静态方法,返回当前时间与1970-01-01的时间间隔,毫秒单位。

    Date.parse()    
        解析一个日期时间字符串,返回1970-01-01午夜到给定日期之间的毫秒数
        var date = "2012-12-19";
        document.write(Date.parse(date));  //返回  1355875200000
        var da = new Date(date);
        document.write("<br/>" + da.getFullYear() + "-" + da.getMonth() + "-" + da.getDate());  //输出2012-11-19  //注意月份是从0-11
    Date.setDate()  
        设置一个Date对象中的日期值,返回值用调整后的日期的毫秒表示
        var date = new Date();
        document.write(date.setDate(11));  
    var da = new Date(date);
        document.write("<br/>" + da.getFullYear() + "-" + da.getMonth() + "-" + da.getDate()); //输出2012-11-11  //注意月份是从0-11,设置的时候要注意

    Date.setFullYear()  
        设置一个Date对象中的年份,返回值用调整后的日期的毫秒表示。
        var date = new Date();  今天是2012-12-20
        document.write(date.setFullYear(1989)); //返回630167981030
        var da = new Date(date);
        document.write("<br/>" + da.getFullYear() + "-" + da.getMonth() + "-" + da.getDate()); //输出1989-11-20

    Date.setHours()  /
        设置一个Date对象中的小事数,返回值用调整后的日期的毫秒表示。
        var date = new Date();      //现在是2012-12-52 22:52
        document.write(date.setHours(5)); //返回1355954000882
        var da = new Date(date);
        document.write("<br/>" + da.getHours()); //输出05
    Date.setMilliseconds()  
        设置一个日期的毫秒数
        var date = new Date();      //现在是2012-12-20
        document.write(date.setMilliseconds(22)); //返回1356015393022    注意最后两位,无论如何刷新都是22
    Date.setMinutes()    
        设置一个日期的分钟数
        var date = new Date();      //现在是2012-12-52 22:52
        document.write(date.setMinutes(1)); //返回1356012067105
        var da = new Date(date);
        document.write("<br/>" + da.getMinutes()); //输出1
    Date.setMonth()      
        设置一个日期的月份数
        var date = new Date();      //现在是2012-12-20
        document.write(date.setMonth(2)); //返回1332255597722
        var da = new Date(date);
        document.write("<br/>" + da.getMonth()); //输出2
    Date.setSeconds()      
        设置一个日期的描述
    语法:
            date.setSeconds(seconds)
      date.setSeconds(seconds,millis)
        var date = new Date();      //现在是2012-12-20
        document.write(date.setSeconds(3)); //返回1356015783872
        var da = new Date(date);
        document.write("<br/>" + da.getSeconds()); //输出3

    Date.setTime()        
        使用毫秒数设置一个时间
        var date = new Date();      //现在是2012-12-20
        document.write(date.setTime(1356015783872)); //返回1356015783872
        var da = new Date(date);
        document.write("<br/>" + da.getDate()); //输出20
    Date.setUTCDate()        
        设置一个Date对象中对应月的日期值,就是几号(全球时间)
    语法:
            date.setUTCDate(day-of-month)
        var date = new Date();      //现在是2012-12-20
        document.write(date.setUTCDate(12)); //返回1355324952003
        var da = new Date(date);
        document.write("<br/>" + da.getDate()); //输出12

    Date.setUTCFullYear()     
        设置一个Date对象中对应的年份,全球时间
    语法:
            date.setUTCFullYear(year)
      date.setUTCFullYear(year,month)
        date.setUTCFullYear(year,month,day)
        var date = new Date();      
        document.write(date.setUTCFullYear(1999));
        var da = new Date(date);
        document.write("<br/>" + da.getFullYear()); //输出1999

    Date.setUTCHours()      
        设置一个Date对象中对应的小时数,(全球时间)
      语法:
                date.setUTCHours(hours)
          date.setUTCHours(hours,minutes)
           date.setUTCHours(hours,minutes,seconds)
           date.setUTCHours(hours,minutes,seconds,millis)
        var date = new Date();     
        document.write(date.setUTCHours(05));
        var da = new Date(date);
        document.write("<br/>" + da.getUTCHours());

    Date.setUTCMilliseconds()  
        设置一个Date对象中对应的毫秒数,(全球时间)
        var date = new Date();     
        document.write(date.setMilliseconds(05)); //注意此处无论如何刷新都是05结尾

    Date.setUTCMinutes()    
        设置一个Date对象的分钟、秒钟、以及毫秒值。
    语法:
            date.setUTCMinutes(minutes)
            date.setUTCMinutes(minutes,seconds)
            date.setUTCMinutes(minutes,seconds,millis)
        var date = new Date();      //现在是2012-12-20
        document.write(date.setUTCMinutes(25)); //返回1356017146549
        var da = new Date(date);
        document.write("<br/>" + da.getUTCMinutes()); //输出5

    Date.setUTCMonth()    
        设置一个Date对象的月份值及日期值
        var date = new Date();                //现在是2012-12-20
        document.write(date.setMonth(01));    //返回1329751527983
        var da = new Date(date);
        document.write("<br/>" + da.getUTCMonth()); //输出1

    Date.setUTCSeconds()    
        设置一个Date的秒钟及毫秒值
        var date = new Date();                    //现在是2012-12-20
        document.write(date.setUTCSeconds(01)); //返回1356017281976
        var da = new Date(date);
        document.write("<br/>" + da.getUTCSeconds()); //输出1

    Date.setYears()      
        设置一个Date对象的年份值,如果给的参数在0-99之间,它将会加上1900以便把它当中1900-1999之间的年份处理。如果输入4位数,则把它当成FullYear设置
        var date = new Date();                //现在是2012-12-20
        document.write(date.setYear(22));    //返回1356017281976
        var da = new Date(date);
        document.write("<br/>" + da.getFullYear()); //输出1922

        var date = new Date();                //现在是2012-12-20
        document.write(date.setYear(2011)); //返回1324395113386
        var da = new Date(date);
        document.write("<br/>" + da.getFullYear()); //输出2011

    Date.toDateString()    
        以字符串的形式返回一个Date的日期部分
        var date = new Date();     
        document.write(date.toDateString("yyyy-MM-dd"));

    Date.toTimeString()    
        以字符串的形式返回一个Date的时间部分
        var date = new Date();     
        document.write(date.toTimeString("yyyy-MM-dd"));

    Date.toISOString()    
        将一个Date对象转换为ISO-8601格式的字符串,返回的字符串格式为yyyy-mm-ddThh:mm:ssZ
        var date = new Date();   
        document.write(date.toISOString());

    Date.toJSON       
        //JSON序列化一个对象
        var date = new Date();      
        document.write(date.toJSON());

    Date.toLocaleDateString()  
        以本地格式的字符串返回一个Date的日期部分,返回一个本地人可读的日期格式,日期部分
        var date = new Date();     
        document.write(date.toLocaleDateString());

    Date.toLocaleString()    
        将一个Date转化难为一个本地格式的字符串
        var date = new Date();      
        document.write(date.toLocaleString());

    Date.toLocaleTimeString()    
        将一个Date转化为本地的格式的时间部分
        var date = new Date();     
        document.write(date.toLocaleTimeString());

    Date.toString()          
        将一个Date转换为一个字符串
        var date = new Date();            //现在是2012-12-22
        document.write(date.toString());//返回Sat Dec 22 2012 19:59:17 GMT+0800

    Date.toTimeString()       
        以字符串的形式返回一个Date对象的时间部分
        var date = new Date();     
        document.write(date.toString());
    Date.toUTCString()       
        将一个Date对象转换为字符串(全球时间)
        var date = new Date();      
        document.write(date.toUTCString());

    Date.UTC()           
        将一个Date对象转换毫秒的形式  静态方法
        语法:Date.UTC(year,month,day,hours,minutes,seconds,ms)
    document.write(Date.UTC(2011, 11, 11, 11, 11, 11));

    Date.valueOf()         
        如果是一个Date对象,将一个Date对象转为毫秒的形式,否则不显示
        var date = "";
        document.write(date.valueOf());    //不是Date对象,不输出
        var date1 = new Date();

        document.write(date1.valueOf());   //输出1356180400916


*****************************Note***************************************************

1.数组中的迭代方法
    arr.forEach(回调函数,回调函数this的值);
    var arr = new Array("terry","jacky",true);
    var obj = {
        a:1,
        b:2
    }

    arr.forEach(function(a,b,c){
        a->当前遍历的值
        b->当前遍历的值索引
        c->当前遍历的数组
    },obj);
    迭代

    arr.some(function(a,b,c){
        return (typeof a == "string"); //执行一次  返回false
    });
    返回值:boolean
        只要回调函数可以返回true,some的结果就为true
    arr.every(function(a){
        return (typeof a == "string");   //执行三次  返回false (第三个不是字符串)
    });  
    返回值:boolean
        所有回调函数返回true,every的结果就为true
    
    arr.filter(function(a){
    
    });
    过滤,当回调函数返回true,将当前遍历元素a加入到返回值数组中

    arr.map(function(a){
        return a.age;
    });
    映射,map返回值为数组,map数组中的元素为回调函数返回值

2.正则表达式
    1) 定义方式
        构造函数
            new RegExp("正则表达式","修饰符");
            var pattern = new RegExp("javascript","igm");
        正则表达式字面量
            /正则表达式/修饰符
            var pattern = /javascript/ig;
    2) 正则表达式的使用
        var pattern = /javascript/ig;
        pattern为正则表达式对象
        var arr = new Array(1,2,3);
        arr -> Array -> Object
        pattern -> RegExp -> Object
        
    3) 正则表达式对象
        /javascript/ig
        pattern.lastIndex
            如果有修饰符g修饰,lastIndex维护上一次检索的结束位置,如果没有g修饰,lastIndex维护0
        pattern.ignorecase    
        pattern.global        
        pattern.multiline        
        pattern.source    正则表达式文本'/javascript/ig'

        pattern.exec();
            执行正则表达式匹配
            参数:字符串
            返回值:
                1)类数组对象result
                result.index    该字符串出现的起始位置
                result.input    检索的字符串
            
                2)数组


    正则表达式
        1.直接量
            /abc/    检索"abc"
            /\n/    
            /\t/
        2.字符类
            /[abc]/    检索"a" "b" "c"
            /[0-9]/ 检索0 1 2 3 34 5 6 7 8 9
            /[a-zA-Z]/
            \w        words /[a-zA-Z0-9_]/
            \W        Words /[^a-zA-Z0-9]/
            \d        digit /[0-9]/
            \D        Digit /[^0-9]/
            \s        space /[\n\t ]/
            \S        Space /[^\n\t ]/

        3.重复
            子表达式{}
            {1,4}
            {1,}
            {1}    
            ? {0,1}
            +    {1,}
            *    {0,}
        4.重复方式
            贪婪    
                默认,尽可能多匹配
                \w{1,4} 匹配4次,3次,2次,1次
            非贪婪
                重复?    {1,4}?
                尽可能少匹配
                \w{1,4}? 匹配1次,2次,3次,4次
        5.选择
            |
            /javascript|java/

            /java(script)?/
            匹配java字符串,java字符串后可以有0个或者多个script字符串
            如果用pattern.exec执行,返回结果为类数组对象,第一个元素为整体匹配结果,之后的元素为子表达式结果

            /java(script)??/
            第一个问号代表(script)出现次数为0~1次
            第二个问号代表非贪婪匹配,
        6. 位置
            开头  ^  
                多行模式下,表示开头 [^ ] 在方扩号里面表示非
            结束 $
                多行模式下,表示结尾
            /^[^\d]{3}\d+abc$/igm;
            第一个上箭头代表以"[^\d]{3}"开头
            第二个上箭头代表 非

            匹配以非数字的三个字符开头,中间是1~n个数字,以abc结尾的字符串

    修饰符
        i    ignorecase    忽略大小写
        g    global        全局
        m    multiline    多行模式

3.包装器函数
    为了丰富基本数据类型的功能,在基本数据类型变量调用方法的时候,会自动将该基本数据类型转换为相对应的引用数据类型(包装器函数的对象)
        var a = 3;    //a number基本数据类型
        a.valueOf();    //a Number 引用数据类型 自动装箱
        console.log(typeof a);    //a number 基本数据类型  自动拆箱

        var b = new Number("10");//b Number 引用数据类型
        b.valueOf();//b Number 引用数据类型
        console.log(typeof b );//object
    Number();
    Boolean();
    String();
        var a = 3;
        调用方法的时候  a= new Number(a);
        a -> Number.prototype ->Object.prototype
    调用方式 : new 包装器函数();
    
4. String
    var a = "hello world"
    a调用方法的时候 a = new String(a); 调用的方法实际上是String.prototype中的函数



5. 特殊操作符
    typeof
        typeof a;
        判断变量a的类型
    instanceof
        对象 instanceof 构造函数
        判断对象是否是该构造函数的实例 (你是不是由它构造的)
        var a = new Number();
        
        a instanceof Number    a是Number···
    


-------面试题--------
1. JS中内置对象/内置函数
    Object
    Function
    Array
    RegExp
    Date
    包装器函数
    Number
    String
    Boolean
2.怎么理解原型对象
    1) 原型对象存在于函数对象中,也就是说,每一个函数对应一个原型对象
    2) 函数真正的所在是在原型对象中
    3) 原型中定义的方法子对象可以调用

    function Array(){
        
    }
    Array.isArray = function(){
    
    }
    Array.prototype = {
        push:function(){
        }
        pop:function(){
        
        }
        ...
    }

    var arr = new Array(1,2,3);
    arr.push();
    arr.pop();
    Array.isArray();

3. 怎么理解类数组对象
    体现对象的特点
        特有的属性
        arguments.callee

        

    体现数组的特点
        元素,通过索引访问
        length    数组的长度/元素的个数
        arguments[0];
        arguments.length

4. 罗列出String原型中的十个常用方法:
    toString
    valueOf
    length
    match
    replace
    split
    search
    charAt
    charCodeAt
    concat
    slice
    splice
    substr
    substring
    支持正则表达式的方法
        str.split(正则表达式)
        按照正则表达式规则分割字符串,将分割后的结果保存到一个数组中返回

        str.search(正则表达式);
        不支持全局检索,返回第一个满足正则表达式规则的字符串的起始位置。

        str.replace(正则表达式,替换的字符串)
        将满足正则表达式规则的字符串替换为指定要替换的字符串。
        当正则表达式为全局检索时候,替换所有符合条件的
        当正则表达式为非全局检索时候,替换第一个符合条件的【原值没有改变】

        str.match(正则表达式); --不支持全局  匹配
            不会维护pattern.lastIndex,不会记住上一次检索的结束位置,不支持二次调用。

            当正则表达式为全局检索时候:
                返回值为类数组对象
                    如果正则与分组,第一个元素为全局匹配结果,之后的每个元素为分组匹配结果
            当正则表达式为非全局检索时候:
                返回值为数组
    Math
        对象
        Math.ceil();
        Math.floor();
        Math.round();
        Math.random();
        Math.abs();
    Date
        函数
        var now = new Date();




0 0
原创粉丝点击