this执行问题

1.代码

    var a = 10;
    let obj = {
      a: 20,
      n: function () {
        console.log(this.a);
      },
    };
    let fn = obj.n;
    fn(); //此时的this指向window
    obj.n(); //this指向obj这个对象

2.打印的结果

this执行问题_第1张图片

3.代码分析

 let fn = obj.n;将函数体复制给fn

fn()是普通函数this指向window

obj.fn里面的函数,可以理解成从obj的fn里面拿出来调用,所以执行obj这个对象。

4.为啥let和var输出的结果是不一样的呢

this执行问题_第2张图片

用let在外面声明的变量不等于全局的window

你可能感兴趣的:(javascript,vue.js,开发语言)