第 37 题:谈谈你对 this 指向的了解?

this 的指向不是在创建时就决定了,而是由执行环境决定的,包括全局环境、对象环境、构造函数环境、事件对象

全局环境

全局环境下,this 就代表 window 对象

var name = 'xiaoming';
function say(){
  console.log(this.name);
}
say(); //xiaomig

对象环境

对象环境指向对象

var obj = {
  name : "xiaoming",
  say : function(){
    console.log(this.name);
  }
}
obj.say(); //xiaoming

构造函数环境

构造函数中的 this 会指向创建出来的实例对象

function Person() {
    this.name = 'xiaoming';
}
var p = new Person();
console.log(p.name); // xiaoming

事件对象

在 DOM 事件中使用 this,this 指向了触发事件的 DOM 元素本身

li.onclick = function(){
    console.log(this.innerHTML);
}

改变 this 指向的方法有哪些?

通过 call()、apply()、bind()改变 this 指向

那么箭头函数中的 this 呢?

箭头函数体内的 this 对象,就是定义该函数时所在的作用域指向的对象,而不是使用时所在的作用域指向的对象

  1. 箭头函数本身没有 this 指向,如果使用 this 则指向上一级函数(非箭头函数)的 this

  2. 箭头函数声明的构造函数不能够被 new 实例化

var name = 'window';

var A = {
   name: 'A',
   sayHello: () => {
      console.log(this.name)
   }
}

A.sayHello();// 还是以为输出A ? 错啦,其实输出的是window

这里的箭头函数,也就是 sayHello,所在的作用域其实是最外层的 js 环境,因为没有其他函数包裹;然后最外层的 js 环境指向的对象是 winodw 对象,所以这里的 this 指向的是 window 对象

参考资料 JS 中----this 的指向和如何修改 this 的指向 ES6 箭头函数的 this 指向详解

#

文章的内容/灵感都从下方内容中借鉴

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java是一种广泛应用的编程语言,具有强大的跨平台能力和丰富的类库支持。在软件开发行业中,Java具有广泛的应用领域,包括企业级应用开发、移动应用开发、Web开发、大数据处理等。 首先,Java在企业级应用开发方面非常受欢迎。它的特性如面向对象、封装、继承和多态等,使得Java成为构建可靠、可扩展和可维护的企业级应用的首选语言。Java的企业级框架如Spring和Hibernate等,提供了丰富的功能和工具,帮助开发人员快速构建高质量的企业应用。 其次,Java在移动应用开发领域也占据重要地位。Android平台采用了Java作为主要的开发语言,开发人员可以利用Java的丰富类库和工具来开发各种类型的移动应用。同时,Java的跨平台特性也使得开发人员能够方便地在不同的移动设备上运行他们的应用程序。 此外,Java在Web开发方面也有广泛的应用。Java的服务器端技术如Servlet和JSP等,可以帮助开发人员构建高性能、可扩展的Web应用。同时,Java的框架和库如Spring MVC和Struts等,提供了丰富的功能和工具,使得Web开发更加简单和高效。 最后,Java在大数据处理方面也有很多应用。Hadoop和Spark等大数据处理框架使用Java作为主要的编程语言,开发人员可以利用Java的并发性和可扩展性来处理海量数据,并进行数据分析和挖掘。 综上所述,Java作为一种强大的编程语言,在软件开发行业中具有广泛的应用领域。它的跨平台能力、丰富的类库支持以及各种开发框架和工具的支持,使得Java成为开发人员首选的语言之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值