返回 登录
0

javascript · 多态


点了一下没有反应,就右点了下,结果就发布了两个相同的文章。在个人中心页面删除按钮点不了。所以才在这篇文章上面加上说明的文字。
浏览器控制台里各种报错,加载卡到爆啊


图片描述
javascript是一种很玄乎的语言。
那么来分享一下js中多态的写法。
分享之前首先要明白一个保留字 arguments,
它是js中一个很有用的变量
上干货:

function a() { 
            //这里括号里可以不写内容 
            var ar = arguments; 
            if (ar.length == 0) return;
             if (typeof(ar[0])=="number"){ 
                console.log("The type of the first argument is 'number'."); 
                ar[0]++; return ar[0]; 
             } else if (typeof(ar[0])=="string"){ 
                console.log("The type of the first argument is 'string'."); 
                ar[0]+="STRING"; return ar[0]; 
             } 
        }

简单理解一下它的意思。
arguments 是function中的一个系统变量,你可以通过它来获取传入参数的值。借此实现多态。
使用方式:arguments[i]: i 代表的是参数的位置(第一个参数、第二个参数……)从0开始。

a(1,"imooc");//arguments[0]-->1;arguments[1]-->"imooc"

在这之后你可以写一个函数来方便自己使用。如:

//logic--"string,number;number,number" 各变量类型 
    function polyTest(logic, ar) { 
        logic = logic.split(";");
        //将总逻辑分割成多个子逻辑 
        //logic->["string,number","number,number"] 
        var isLogic = false;
        //判定变量 
        for (var i in logic) { 
            logic[i] = logic[i].split(",");
            //子逻辑再次分割 
            //logic->[["string","number"] , ["number","number"]] 
            for (var j in logic[i]) { 
                if (ar.length != logic[i].length) break; 
                //如果变量个数与逻辑中个数不同便结束此循环 
                if (typeof(ar[j]) != logic[i][j]) {
                    //如果变量的类型与逻辑中类型不同 
                    isLogic = false;
                    //判定变量归为原值false 
                    break;
                    //结束此循环 
                } 
                isLogic = true;
                //如果上面的两种情况都没有发生就将判定变量赋值true 
            } if (isLogic) return i;
            //如果判定变量值为true则返回对应的逻辑编号
         } 
         throw "没有任何匹配的逻辑";
         //如果循环完毕都没有返回任何值则抛出错误 
    }
评论