关于javascript:javascript高级3

创立函数的三种款式

1.function申明的一般函数(命名函数)
2.函数表达式(匿名函数)
3.new Function()

var fn =new Function(‘参数1′,’参数2’,…,’函数体);

  • Function()外面的参数都是字符串格局
  • 第三种形式执行效率比拟低,也不不便书写,因而较少应用
  • 所有的函数都是Fnction的实例对象
  • 函数也属于对象
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数的定义和调用形式</title>
</head>
<body>
<script>
    // 自定义形式
 function fn() {
    }
    // 函数表达式
 var fn = function() {
    }
    // 利用new Function('参数1','参数2','函数体')
 var f = new Function('a','b','return a+b')
    console.log(f(1,2));
    console.dir(f);
    //用来判断f是否是一个对象
 console.log(f instanceof Object)
</script>
</body>
</html>

不同函数的调用形式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<button>按钮</button>
</body>
<script>
    // 函数的调用形式
 // 1.一般函数的调用
 function fn() {
        console.log('hello word')
    }
    fn()
    // 2.对象类的函数调用
 var obj = {
        say: function () {
            return 'hello word'
 }
    }
    console.log(obj.say())
    // 3.构造函数的调用
 function Star(name, age) {
        this.name = name;
        this.age = age;
    }
    var star1 = new Star('尧子陌', '18');
    console.log(star1.name)
    //4.事件函数的调用
 var bth = document.querySelector('button');
    bth.addEventListener('click', function () {
        console.log('事件函数')
    })
    // 5.定时器函数
 setInterval(function () {
        console.log('定时器函数')
    }, 5000)
</script>
</html>

自执行函数

顾名思义:本人调用的函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自执行函数</title>
</head>
<body>
<script>
    (function () {
        alert('hello word')
    })()
</script>
</body>
</html>

this的指向问题

函数外部的this指向,当咱们调用的时候才确定

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>函数的this指向</title>
    </head>
    <body>
        <button>按钮</button>
    </body>
    <script>
        // 函数的调用形式

        // 1.一般函数的调用
        function fn() {
            console.log(this) //windows

        }

        fn()
        // 2.对象类的函数调用
        var obj = {
            say: function() {
                console.log(this) //指向o这个对象
            }
        }
        obj.say()

        // 3.构造函数的调用
        function Star(name, age) {
            console.log(this) //构造函数中的this指向的是它的实例化 star
            this.name = name;
            this.age = age;

        }

        var star1 = new Star('尧子陌', '18');
        //4.事件函数的调用
        var bth = document.querySelector('button');
        bth.addEventListener('click', function() {
            console.log(this) //事件函数中的this 指向的是它的调用者bth按钮
        })

        // 5.定时器函数
        setInterval(function() {
            console.log(this) //定时器中的this 指向的是windows
        }, 5000)
    </script>
</html>

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理