05_Javascript進階次日

  1. String對象
    res=str.charAt(1);//返回字符串中第n個字符(輸出:i)
            res=str.charCodeAt(1);//返回第n個字符的ASCII編碼(輸出:105)
            res=String.fromCharCode(105,97);//根據ASCII編碼返回指定字符,可指定多個(輸出:ia)
            res=str.concat('yes');//鏈接字符串,至關於鏈接符+(輸出:Will you set sail tonight?yes)
            res=str.indexOf('you',3);//查找字符串'you'首次出現的位置,指定從下標3開始查找(輸出:5)
            //經過indexOf能夠統計一個字符在字符串中出現的次數
            function _count(str,search){
                var count=0,n=0;
                while(n!=-1){
                    count++;
                    n=str.indexOf(search,n+1);
                }
                return count;
            }
            var num=_count('abcaabs','a');
            console.log('count:'+num);
            
            res=str.lastIndexOf('you');//返回查找字符最後一次出現的位置,其實是從後面開始查找(輸出:25)
            

     sort的排序原理是什麼?數組

    //localCpmpare比較字符串(實現中文按照字母排序)
        var array = ['白鴿', '麻雀', '大象', '狗', '貓', "雞"];
        array = array.sort(
        function compareFunction(item1, item2) {
            return item1.localeCompare(item2);
        }
    );
    //輸出:"白鴿,大象,狗,雞,麻雀,貓"
    var arr=[6,1,3,5,2,8]
    arr=arr.sort(
        function(x,y){
            return x>y;//從小到大排序
        }
    )
    輸出:"1,2,3,5,6,8"

     

    match匹配,search搜索,replace代替app

    var str='this is a test';
    var res;
    res=str.match('is');//輸出:["is", index: 2, input: "this is a test"]
    res=str.search('is');//輸出:2
    res=str.replace(/is/g,'?');//全局匹配。輸出:"th? ? a test",若是不加g,只替換第一個is
    str='2017-12-9';
    res=str.replace(/(\d{4})-(\d{2})-(\d{1,2})/,'$2/$3/$1');//輸出:"12/9/2017"
    //用函數實現
    res=str.replace(/(\d{4})-(\d{2})-(\d{1,2})/,func);
    function func(match,d1,d2,d3){
    //    return d2+'/'+d3+'/'+d1;
    return [d2,d3,d1].join('/');
        
    }
    console.log(res);

    字符串截取函數

            var str='abcde';
            var res;
            //slice(start.end),返回截取後的字符串
            //substr(start,length),返回截取以後的字符串
            //split(delimiter[,limit]),將字符串拆分爲數組
            res=str.slice(0,-1);//輸出:abcd
            res=str.substr(2,2);//輸出:cd
            
            str='red,green,blue';
            res=str.split(',',2);//2是可選參數,表示返回兩個元素,輸出:"red,green"

    其餘this

            //字符串大小寫相關
            str='HELLO world';
            res=str.toLowerCase();//換成小寫
            res=str.toLocaleLowerCase();//也是換成小寫
            res=str.toUpperCase();//大寫
            
            //trim字符串過濾
            str=' hello world ';
            res=str.trim();//去掉了先後的空格
            
            //產生錨點
            str='this is a test';
            document.body.innerHTML=str.anchor('anchor_name');//<a name="anchor_name">this is a test</a>
            //產生連接
            var title='百度';
            var url="http://www.baidu.com";
            document.write(title.link(url));\n
            //<a href="http://www.baidu.com">百度</a>

     



  2. Function對象
    屬性:
        var res;
        function a(x,y,z){
            return x+y+z;
        }
        //一、constructor返回建立該對象的構造函數
        res=a.constructor;//輸出:function Function() { [native code] }
        
        //二、length返回函數的參數個數
        res=a.length;//輸出:3
        
        //三、caller返回調用當前函數的函數
        function f1(){
            return f1.caller;
        }
        function f2(){
            return f1();
        }
        res=f2();
        //輸出:"function f2(){return f1();}"
        
        //四、arguments返回由函數的全部參數組成的數組
        function a(){
            return arguments;
        }
        res=a(1,2,'c');//輸出:[1, 2, "c", callee: function, Symbol(Symbol.iterator): function]
        
        //arguments有個callee屬性,返回當前被調用的函數對象
        
        function a(){
            return arguments.callee;
        }
        res=a();
        //輸出:function a(){……}
        //能夠利用callee屬性實現匿名函數的自身調用
        (function(count){
            if(count<=3){
                alert(count);
                arguments.callee(++count);
            }
        })(0);

     call和apply方法編碼

        //call回調函數
        var obj={
            say:function(x,y){return x+y;}
        };
        var obj1={};
        res=obj.say.call(obj1,1,2);//obj1調用obj的方法,1,2是參數
        res=obj.say.apply(obj,[2,3]);//跟call方法差很少,只不過參數以數組形式傳遞

     



  3. Math對象,不是函數對象
            var res;
            res=Math.E;//輸出: "2.718281828459045"
            res=Math.PI;//輸出:"3.141592653589793"
            res=Math.abs(-123);//取絕對值,輸出:123
            res=Math.ceil(2.14);//向上取整,輸出:2
            res=Math.floor(2.82);//向下取整,輸出:2
            res=Math.round(2.45);//四捨五入,輸出:2
            res=Math.pow(2,3);//2的3次方根,輸出:8
            res=Math.sqrt(16);//開方根,輸出:4
            res=Math.max(1,45,6);//求最大值,輸出:45
            console.log(res)

     

  4. 對象的原型prototype
        function product(name,color){
            this.name=name;
            this.color=color;
            this.say=function(){return 'this is a test';};
        }
        product.prototype.price=123;
        product.prototype.memory=32;
        var p1=new product('蘋果手機','白色');
        //new運算符,函數裏面的this自動指向創造的對象,product函數裏面的this指代p1,
        //因此p1有3個自身屬性,price和memory是原型鏈的屬性
        for(var i in p1){
            //判斷是不是自身屬性
            if(p1.hasOwnProperty(i)){
                console.log(p1[i]);//不能用p1.i
            }
    
        }

     

  5. 內建對象的擴展
    String.prototype.reverse=function(){
        return Array.prototype.reverse.apply(this.split('')).join('');
    }
    console.log('abc'.reverse());//輸出:cba
    
    
    
    //檢測方法是否存在,不存在則擴展
    if(!Array.prototype.inArray){
    //    alert('no');
        Array.prototype.inArray=function(search){
            for(var i=0;i<this.length;i++){
                if(this[i]==search){
                    return true;
                }
            }
            return false;
        }
    }
    
    var arr=['a','b','c'];
    console.log(arr.inArray('A'));

     

  6. 13章後看不下去,繼承,原型鏈什麼的……
相關文章
相關標籤/搜索