this面试题

本文主要探讨JavaScript中的this指向规则,包括默认绑定、隐式绑定、显式绑定、new绑定和箭头函数的情况,并通过一系列面试题进行深入解析,帮助读者理解和掌握this的使用。
摘要由CSDN通过智能技术生成

如果没有学习过this的指向的话,可以简单学习一下。JavaScript中this指向

不是很详细,但是大部分的情况都能包括到了,也可以在做题的过程随时复习。 

this指向规则

  1. 默认绑定 函数独立调用 this指向window
  2. 隐式绑定 通过某个对象进行调用 this指向调用的那个对象
  3. 显式绑定 使用call、apply、bind方法进行绑定 this指向绑定的那个对象
  4. new绑定 使用new关键字来调用函数的时候 this指向调用的那个对象
  5. 箭头函数没有this 所以会往上层作用域查找

 this指向的其他情况

  1. 如果在显式绑定中传入null或者undefined 这个绑定会被忽略 this指向window
  2. 创建一个函数的间接引用 这种情况使用默认绑定 this指向window 

this指向规则的优先级

  • new绑定 > bind绑定 > call/apply绑定 > 隐式绑定 > 默认绑定

1.this面试题一 

//面试题一
var name = "window";
      var person = {
        name: "person",
        sayName: function () {
          console.log(this.name);
        }
      }
      function sayName() {
        var aaa = person.sayName;
        aaa();
        person.sayName();
        (person.sayName)();
        (b = person.sayName)();
      }
      sayName();

在这个面试题一中调用了sayName函数,要求写出aaa()、person.sayName()、(person.sayName)()、(b = person.sayName)的结果。

  1. aaa(): 将person对象中的sayName函数赋给了变量aaa,但是aaa()在进行调用的时候使用的是this指向规则中默认绑定,所以this指向的是window,在window中刚好定义了一个值为window的name变量,所以输出window
  2. person.sayName(): person对象调用的sayName函数,所以是隐式绑定,this指向person对象,所以输出person
  3. (person.sayName)(): 和上一题一致,加了小括号()只不过是加了优先级,还是隐式绑定,所以输出person
  4. (b = person.sayName)(): 是上述this指向的其他情况中的,创建一个函数的间接引用,这种情况使用默认绑定,所以输出window

面试题一答案速查

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

至尊绝伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值