欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS函数中的this

程序员文章站 2022-06-30 19:13:24
...

JS函数中的this

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>函数中的this</title>
</head>
<body>
    <script>
    //函数中的this          window
    //方法中的this           调用方法的对象
    //构造函数中的this       通过构造函数创建的对象
    //事件处理函数中的this   触发事件的对象
    //定时器执行的function中的this  window

    // setInterval(function(){
    //     //this --> window
    // }.bind(),10);

    //function中的this 最终是由function调用的时候决定的

    var o = {
        name:'zs',
        say:function(){
            console.log(this.name);
        }
    }

    var o2 = {
        name:'ls',
        say:o.say
    }

    o2.say();
    </script>
</body>
</html>

上面的代码输出为:ls

谁调用 say函数 this 就是谁

 var o = {
        name:'zs',
        say:function(){
            console.log(this.name);
        }
    }

    var o2 = {
        name:'ls',
        say:o.say
    }

    //say函数 谁调用 this 就是谁
    // o2.say();

    //这里是赋值 不是调用 不能写成 var fn = o2.say();
    var fn = o2.say;
    fn();
    //这里相当于window.fn() 输出为空, window下有name属性 为空

o.say.call(o2); 试试这个