美文网首页H5^Study
JS高级学习:函数相关

JS高级学习:函数相关

作者: Merbng | 来源:发表于2019-04-20 22:33 被阅读0次

    函数的声明和函数表达式

    函数声明如果放在if-else的语句中,在IE8的浏览器中会出现问题,
    以后宁愿要函数表达式,都不要用函数声明

    // 函数声明
                if (true) {
                    function f1() {
                        console.log("if的方法");
                    };
                } else {
                    function f1() {
                        console.log("else的方法");
                    };
                }
                f1();
                // 函数表达式
                var ff;
                if (true) {
                    ff = function() {
                        console.log("函数表达式的if")
                    }
                } else {
                    ff = function() {
                        console.log("函数表达式的else")
                    }
                }
                ff();
    

    函数中this的指向

    • 函数中this的指向
    • 普通函数中this的指向:window
    • 对象.方法中this的指向:当前的实例对象
    • 定时器方法中this的指向:window
    • 构造函数中this的指向:实例对象
    • 原型对象方法中this的指向:实例对象
    <script type="text/javascript">
                "use strict"; //使用 严格模式
                function f1() {
                    console.log(this); //window
                };
                //普通函数
                   function f1() {
                     console.log(this);
                   }
                  f1();
    
                定时器中的this
                   setInterval(function () {
                     console.log(this);
                   },1000);
    
    //          构造函数
                   function Person() {
                     console.log(this);
                对象的方法
                     this.sayHi=function () {
                       console.log(this);
                     };
                   }
                // 原型中的方法
                   Person.prototype.eat=function () {
                     console.log(this);
                   };
                   var per=new Person();
                   console.log(per);
                   per.sayHi();
                   per.eat();
    
    
                //BOM:中顶级对象是window,浏览器中所有的东西都是window的
            </script>
    

    函数的不同调用方式

    <script type="text/javascript">
                // 普通函数
                function f1() {
                    console.log("张家界案件");
                }
                f1();
                // 构造函数---通过new来创建对象
                function F1() {
                    console.log("阿加");
                }
                var f = new F1();
                // 对象中的方法
                function Person() {
                    this.play = function() {
                        console.log("金娃鸡啊");
                    };
                }
                var per = new Person();
                per.play();
            </script>
    

    函数也是对象

    • 函数是对象,对象不一定是函数
    • 对象中有proto原型,是对象
    • 函数中有prototype原型,是对象
    • 如果一个东西里面有prototype,又有proto,说明是函数,也是对象
    <script type="text/javascript">
                var f1 = new Function("num1", "num2", "return num1+num2");
                console.log(f1(10, 20)); //30
                console.log(f1.__proto__ == Function.prototype); //true
                // 所以,函数实际上也是对象
                console.dir(f1);
                console.dir(Function);
            </script>
    

    数组的函数调用

    <script type="text/javascript">
                var arr = [function() {
                        console.log("我就安静")
                    },
                    function() {
                        console.log("分啊啊")
                    },
                    function() {
                        console.log("个恩爱")
                    },
                    function() {
                        console.log("哈哈哈")
                    },
                    function() {
                        console.log("还问我")
                    }
                ];
                // 回调函数:函数作为参数使用
                arr.forEach(function(ele) {
                    ele();
                })
            </script>
    

    相关文章

      网友评论

        本文标题:JS高级学习:函数相关

        本文链接:https://www.haomeiwen.com/subject/ewrrgqtx.html