JS方法整理

如有错误,请指出!!!

1.实参列表arguments

 function sum(a,b,c,d) {
//            实参列表arguments
//            sum.length 形参长度
         if(sum.length>arguments.length){
               console.log('形参多了');
           }
           else if (sum.length<arguments.length){
               console.log('实参多了');
           }
           else console.log('相等');
        }

2.不定参求和

function sum() {
           var result=1;
           for(var i=0;i<arguments.length;i++){
                 result+= arguments[i];

           }
           console.log(result);
       }

3.转换为数字类型

 function MyNumber(num) {
           return +num;
       }
        var n=MyNumber('123');
       console.log(typeof (n)+"  "+n);

4.递归求阶乘

 function jc(n) {
            if(n==1||n==0){
                return 1;
            }
            return n*jc(n-1);
        }

5.立即执行函数

//立即执行函数 执行一次后 销毁
//只有表达式才能被执行符号执行

 var num=(function add(a,b,c) {
            var d=a+b+c;
            return d;
        }(1,2,3));

6.闭包问题

function test() {
            var arr=[];
            for(var i=0;i<10;i++){
                //输出10个10
                /*arr[i]=function () {
                    document.write(i+" ");
                }*/
                //立即执行函数解决方法  输出0-9
                (function (j) {
                    arr[j]=function () {
                        document.write(j+" ")
                    }
                }(i));
            }
            return arr;//产生闭包
        }
        var myArr=test();
        for(var j=0;j<10;j++){
            myArr[j]();
        }

7.数组对象

   var Mr={//定义Mr对象
            //属性-->属性名:属性值
            name:"xiaoming",
            age:18,
            health:100,
            //方法/函数
            exercise:function () {
                console.log("I am exercise!")
                 Mr.health++;//等同于this.health++;
                return Mr.health;
            },
            drink:function () {
                console.log("I am drinking!")
                Mr.health--;//等同于this.health--;
                return Mr.health;
            }
        }
        Mr.sex="man";//添加数据
        Mr.age=20;//修改属性
        delete Mr.age;//删除属性

8.对象的创建方法

1.var obj={}
2.构造函数   隐式的生成this={}   返回 return this;
    1)系统自带的构造函数  new Object()
    2)自定义  函数名首字母大写
 function Person(name,height) {
            //var this={};
            this.name=name;
            this.height=height;
            this.say=function () {
                console.log(this.say);
            }
            //return this;
        }
        var p=new Person('xiaoming',180);
        console.log(p.name);
        console.log(p.height);

9.

 var arr=[1,2,3,4];
        arr.length=2;//截断
        console.log(arr);//输出[1,2]
var str="abcd";
        str.length=2;
       
        console.log(str);//输出abcd

10.继承 圣杯模式

 Father.prototype.lastName="gai";
        function Father() {

        }
        function Son() {

        }
        function inherit(Target,Origin) {
            function F() {};
            F.prototype=Origin.prototype;
            Target.prototype=new F();
            Target.prototype.constructor=Target;
            Target.prototype.uber=Origin.prototype;
        }
        inherit(Son,Father);
        var son=new Son();
        var father=new Father();

11.0-100随机数

 for(var i=0;i<10;i++)
        {
            var num;
            num=Math.random().toFixed(2)*100;//0-100随机数 toFixed保留n位小数  js精度不准会产生误差 如:0.14*100=14.00000000000002
            //解决方法  先乘100再取整
            var num1=Math.floor(Math.random()*100);
            console.log(num1);
        }

12.命名空间

 name="abc"
        var init=(function () {
            var name=123;
          function Name() {
              console.log(name);
          }
          return function () {
              Name();
          }
        }())

13.连续调用

 var MR={
            eat:function () {
                console.log('Eating');
                return this;
            },
            run:function () {
                console.log('Running');
                return this;
            },
            study:function () {
                console.log('Studying');
                return this;
            }
        }
        MR.eat().run().study();

14.对象枚举

 for in 循环遍历对象  通过对象属性个数 控制循环圈数  属性名放在prop
控制台输入 '属性名' in obj 可判断对象obj能否访问到的属性名

 var obj={
            name:"132",
            age:18,
            sex:"boy",
            height:180,
            weight:70,
            __proto__:{//原型里的属性
                lastname:"wang"
            }
        }
        for(var prop in obj)//var 属性名 in 对象名  prop字符串类型
        {
            //console.log(prop);//输出属性名
            if(obj.hasOwnProperty(prop)){//判断是否是对象的属性
                console.log(obj[prop]);//不能写成obj.prop   obj.prop-->obj['prop']找不到prop属性  会输出undefined
            }

        }

15.克隆

 var obj={
            name:'abc',
            age:12
        }
        var obj1={}

        function clone(origin,target) {
            var target=target||{};
            for(var prop in obj){
                target[prop]=origin[prop];
            }
            return target;
        }
        clone(obj,obj1);

16.深度克隆

   var obj={
                    name:'abc',
                    age:12,
                    card:['1','2'],
                    obj2:{
                        name:"sad",
                        age:23
                    }
                }
                var obj1={}

                function deepClone(origin,target) {
                    var target=target||{},
                    toStr=Object.prototype.toString,
                    arrStr="[object Array]";
                    for(var prop in obj){
                        if(origin.hasOwnProperty(prop))//判断是否是原型里的属性
                        {
                            if(origin[prop]!=="null"&&typeof (origin[prop])=='object'){
                                //判断是数组还是对象
                                if(toStr.call(origin[prop])==arrStr)//数组
                                {
                                    target[prop]=[];

                                }else{
                                    target[prop]={};
                                }
                                deepClone(origin[prop],target[prop]);
                            }
                            else
                                target[prop]=origin[prop];
                        }

                    }
                    return target;
                }

17.数组去重

 var arr=[1,2,1,2,1,1,2];
        Array.prototype.unique=function () {
            var len=this.length,obj={},arr=[]/*去重后的数组*/;
            for(var i=0;i<len;i++){
                if(!obj[this[i]]){
                    obj[this[i]]="abc";//随意一个字符串 占位
                    arr.push(this[i]);
                }
            }
            return arr;
        }

猜你喜欢

转载自blog.csdn.net/G_072625/article/details/81017597