JavaScript基础-函数相关总结

117 阅读2分钟

一.函数的定义

    1.声明函数

       function funName(arg0,arg1,arg2){

          // 函数体

       }

       函数声明可以提升,在执行代码之前会先读取函数声明,

       所以函数声明可以放在调用函数语句之后

    2.构造函数

       function Person(first,last,age,eye){

          this.firstName = first;

          this.lastName = last

          this.age = age;

          this.eyeColor = eye;

       }

      函数 Person() 是对像构造器函数,通过new 关键词调用

      var myFather = new Person("Bill","Gates",62,blue)

      为对象添加属性和方法

       myFather.nationality = "English";

       myFather.name = function () {

           return this.firstName + “” + this.lastName;

       };

   3.匿名函数

(1)赋值

                赋值给事件

                   window.onload = function(){

                      // 函数体

                   }

               赋值给变量

                 var func = function(){}

                 func() // 必须放在函数后面

      ** (2) 自执行**

             1.使用!开头

                  !function(){}();

             2.使用()

                 (function(){})();

            3. 将匿名

                (function()());

            4.中括号内执行

               [function(){}()];

           5.使用+

              +function(){}

          6.使用-

             -function(){};

          7.使用~

             ~function(){}();

         8.使用void

             void funciton(){}();

    4.嵌套函数

        js 允许函数的相互嵌套,因此可以嵌套函数。

           声明两个相互嵌套的函数体结构

          function a(x,y){

              function b(c,d){

                  return a * b;

             }

            returen x+y;

         }

      嵌套的函数只能在函数体内可见,函数外不允许直接访问

       function a(x,y){

         function b(c,d){

           return a * b;

        }

         return e(3,6) + y;

      }

     console.log(f(3,6))

二.函数的属性

   1.length 属性

        函数的length 属性 表示形参个数。

   2.name 属性

        属性可以访问到给定函数指定函数名,匿名函数的name 属性为空

   3.ptototype 属性 指向一个对象的引用 每一个函数都包含不同的原型对象

        将函数用做构造函数时,新创建的对象会从原型对象上继承属性

三.函数的调用

     1.一般形式的函数调用

          (1)使用小括号

                function fn(a,b){

                    return a *b;

                }

               console.log(fn(3,3))

        ** (2)函数返回值为一个函数**

              function fn(c,d){

                 return function(){

                     return c * d;

                 }

             }

            console.log(fn(5,6)())

        (3)递归调用函数

           function fn() {

               return fn;

            }

            console.log(fn()()()()())

     3.使用call 和 apply 动态调用

            call 和 apply 是function 的原型方法,能够将特定的函数当做一个方法绑定到指定对

            象上, 并进行调用

              function.call(thisobj,args...)

              function.apply(thisobj,[args])

      **    (1)使用call 动态调用函数**

                function f(a,b){

                   return a+b;

                }

                console.log(f.call(null,3,3))

          (2)使用apply 动态调用函数

               function f(a,b){

                 return a+b;

               }

              console.log(f.call(null,3,3))

         (3)可以动态调用Math 的 max 方法来计算数组的最大元素

                var a = [1,10,55,44,22,63,88];

                var m = Math.max.apply(Object,a)

                 console.log(m)

              call 和 apply 方法的主要功能如下

                  调用函数

                   修改函数体内的this 代指对象

                   为对象绑定方法

                   跨越限制调用不同类型的方法

      4.new 命令间接调用

           new 命令可以实例化对象,在创建对象的过程中会激活并运行函数

           使用new 命令可以间接调用函数

           function (a,b){

              console.log("a=" + a+ ", b =" + b)

           }

          new fn(3,4)

          使用new 命令调用函数时,返回的事对象,而不是return返回值