arguments,foreach循环,重载,回调函数,对象继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arguments,foreach循环,重载,回调函数,对象继承相关的知识,希望对你有一定的参考价值。

<html>

<body>

    <p id="p"> this is ppp </p>
    <p id="p2"> this is ppp22 </p>
    <p id="p3"> this is ppp33 </p>
    <script>
    //arguments
    //arguments是每一个函数内部的一个对象
    //可以访问实际传递给函数的参数的信息。
    
    /*
    function add(a,b){
        //console.log(add.length);//形参的个数
        //console.log(arguments.length);//实际传过来的参数
        var total = 0;
        for(var i = 0;i< arguments.length;i++){
        
            total += arguments[i];
        }
        return total;
    }
    
    var result = add(1,2,3,4,5);
    var result2 = add(1,2);
    console.log(result);
    console.log(result2);
    
    
    function setStyle(){
        if(arguments.length < 1
            || arguments.length > 2){
            return ;
        }

        
        var pele = document.getElementById("p");
        if(arguments.length == 1){
            return pele.style[arguments[0]] ;
        }else{
            pele.style[arguments[0]] = arguments[1];
            //pele.style.backgroundColor = "red"
        }
        
        
    }
    
    //setStyle("fontSize","18px");
    
    setStyle("backgroundColor","red");
    var styleValue = setStyle("backgroundColor");
    alert(styleValue);
    
    setStyle("fontSize","18px");
    var styleValue2 = setStyle("fontSize");
    alert(styleValue2);
    
    //声明的时候参数的个数与实际调用时无关
    
    
    //foreach循环
    var arr = [100,300,800];
    for(var data in arr){
        //alert(arr[data]); //循环数组时,data是下标
    }
    
    var o ={name:"cj",age:22};
    for(var p in o){
        //alert(p);
        //alert(o[p]);
    }
    
    
    function myForEach(eles,callback){
        for(var i=0;i< eles.length;i++){
        
            callback(i,eles[i]);
        }
    }
    
    var alls = document.getElementsByTagName("p");
    myForEach(alls,function(index,ele){
        //alert(index);
        //alert(ele);
        ele.style.backgroundColor = "red";
    });*/
    

    
    
    
    
    
    //重载(个数不同,类型不同)
    /*
    function prop(){
    
        var firstP = document.getElementById("p");
        
        if(arguments.length == 1){
            var temp = arguments[0];
            
            for(p in temp) {        
                firstP.style[p] = temp[p];            
            }
            
            
        }else if(arguments.length == 2) {
        
            firstP.style[arguments[0]] = arguments[1];
        
        }
        
    
    }
    
    //prop("backgroundColor","black");
    //prop("fontSize","38px");
    prop({
        backgroundColor:"red",
        fontSize:"38px"
    });
    
    */
    
    /*
    
    
    
    */
    //回调函数
    //js里面,狭隘的理解,参数作为参数,并在函数
    //实现体里面被调用
    
    /*
    function a(){
        b(); //c();d();
    }
    function a(callback){
    
        callback();
        
    }
    function b(){
    
    }
    
    function c(){
    
    }
    a(b);
    a(c);
    a(function(){});
    
    function CjOneDay(maiyan){
        console.log("chouyan");
        
        var yan = maiyan(10);
        console.log(yan);
    }
    
    function banZhangMaiYan(money){
        if(money == 20){
            return "wuyeshen";
        }else{
            return "zhongnanhai";
        }
    }
    CjOneDay(banZhangMaiYan);
    
    
    //
    function myForEachBgColor(eles){
        
        for(var i=0;i< eles.length;i++){
            
            if(i % 2 == 0 ) {
                eles[i].style.backgroundColor = "red";
            }else{
                eles[i].style.backgroundColor = "green";
            }
        }
    }
    
    function myForEachFontSize(eles){
        
        for(var i=0;i< eles.length;i++){
            
            if(i % 2 == 0 ) {
                eles[i].style.fontSize = "30px";
            }else{
                eles[i].style.fontSize = "10px";
            }
        }
    }
    
    function myForEach(eles,callback){
        
        for(var i=0;i< eles.length;i++){
            
            callback(i,eles[i]);
        }
    }
    var allp = document.getElementsByTagName("p");
    //myForEachBgColor(allp);
    //myForEachFontSize(allp);
    
    
    myForEach(allp,function(index,ele){
        if(index % 2 == 0 ) {
                ele.style.fontSize = "30px";
            }else{
                ele.style.fontSize = "10px";
            }
    });
    
    myForEach(allp,function(index,ele){
        if(index % 2 == 0 ) {
                ele.style.backgroundColor = "yellow";
            }else{
                ele.style.backgroundColor = "green";
            }
    });
    
    */
    
    
        //对象继承            
        var child ={name:"banzhang"};
        var parent = {age:18,gender:true}
        
        function myExtend(cObject,pObject) {
        
            for(var p in pObject){
            
                cObject[p] = pObject[p];
            }
            return cObject;
        }
        
        var exChild = myExtend(child,parent);
        //alert(exChild);
        console.log(exChild);
        
        var exChild = superExtend(child,parent,p2,p3,p4);
        
    </script>
</body>
</html>

以上是关于arguments,foreach循环,重载,回调函数,对象继承的主要内容,如果未能解决你的问题,请参考以下文章

(JavaScript) 将 forEach 循环与内部回调同步

关于[JS] forEach循环return无法跳出的踩坑和解决方案

js中forEach的用法forEach如何跳出循环forEach与for之间的区别

.forEach 完成后执行回调函数

for循环,foreach, map,reduce用法对比+for in,for of

方法 get touch 没有重载需要 0 个参数 [关闭]