this指向2

箭头函数会捕获上下文的this,将其转化为自己this,而普通函数不会。       
// 调用方式    this指向
        //  普通函数调用    window
        //  构造函数调用    实例对象 原型对象里面的方法也指向实例对象
        //  对象方法调用    该方法所属对象
        //  事件绑定方法    绑定事件对象
        //  定时器函数      window
        //  立即执行函数    window
        //  箭头函数       没有自己的this   箭头函数没有自己的this关键字,如果在箭头函数中使用this,this关键字将指向箭头函数定义位置中的this
        //1.普通函数
        function fn() {
            console.log('普通函数的this' + this);
        }
        window.fn()
        //2.对象的方法
        var o = {
            sayHi: function () {

            }
        }
        o.sayHi()
        //3.构造函数 this指向ldh这个实例对象 原型对象里面的this指向的也是ldh这个实例对象
        function Star() {}
        Star.prototype.sing = function () {

        }
        //4.绑定事件对象
        var btn = document.querySelector('button');
        btn.onclick = function () {
            console.log('绑定事件函数的this' + this);
        }
        // 5.定时器函数
        window.setTimeout(function () {
            console.log('定时器的this' + this);
        }, 1000);
        //6.立即执行函数
        (function () {
            console.log('立即执行函数的this' + this);
        })()
        //7.箭头函数
        function fn() {
            console.log(this);
            return () => {
                console.log(this);
            }
        }
        const obj = {
            name: 'zhangsan'
        };
        const resFn = fn.call(obj);
        resFn()



            //obj是一个对象产生不了作用域
        // var age=100;
        var obj={
            age:20,
            say:()=>{
                alert(this.age)
            }
        }
        obj.say();
posted @ 2021-12-28 14:04  ajaXJson  阅读(18)  评论(0编辑  收藏  举报