JavaScript(JS)中-- this 关键字----详解

this是JavaScript中功能最强大的关键字之一。 如果对JavaScript的关键字this理解不够深刻,有时候会掉入意想不到的坑。

一、this概述

this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象。但是在JavaScript中,由于JavaScript的动态性(解释执行,当然也有简单的预编译过程),this的指向在运行时才确定。这个特性在给我们带来迷惑的同时,也带来了编程上的自由和灵活,结合apply、call、bind方法,可以使JS变得异常强大。this是Javascript语言的一个关键字,它代表函数运行时自动生成的一个内部对象,一般在函数内部使用。

① this的值通常是由所在函数的执行环境决定,也就是说要看函数是如何被调用的;
② 同一个函数每一次调用,this都可能指向不同的对象;

this是JS对象中的一个特殊指针,它的指向根据环境不同而会发生改变。

function的this永远指向调用它的对象

两点说明:
① 在全局作用域中(所有函数外)出现的this,指全局对象。在浏览器中就是window对象。
② 在函数内部出现的this,指什么要看这个this所在的函数的被调用方式。
不论这个this出现在什么样的函数中,层次有多深,结构多复杂,只要看直接包含它的函数即可。

二、this指向用法分类详解

this指向小结预览:
① 谁调用或者哪个对象调用this所在的函数,this就指向谁。
② 如果有嵌套调用,则其值会被绑定到调用this所在函数的最近的父对象。不论这个this出现在什么样的函数中,层次有多深,结构多复杂,只要看直接包含它的函数即可。
简而言之,就是function的this永远指向直接调用它的对象。

1、对象构造函数中的this (new关键字构造对象)
当使用new关键字构建一个新的对象,this会绑定到这个新对象。

2、 普通函数中的this
作为普通函数直接调用时,this指向window对象.
this指向:谁调用或者哪个对象调用this所在的函数,this就指向谁。

3、onclick(this)中的this指向
对于一个onclick属性,它为它所属的HTML元素所拥有,this指向该HTML元素。

4、定时器setTimeout中的this指向
定时器中的this指向window对象。因为定时器就是全局函数,由window调用。

5、使用apply、call 或 bind 方法时this的指向
使用apply 、call 或 bind方法时,this指向所传递的对象。
apply()的参数为空时,默认调用全局对象window。

6、ES6 箭头函数和 this
箭头函数的特征就是:定义在哪,this 就指向那。

箭头函数的特征就是:定义在哪,this 就指向那。即箭头函数定义在一个对象里,那箭头函数里的 this 就指向该对象。

三、总结
① 谁调用或者哪个对象调用 this所在的函数,this就指向谁。 如果有嵌套调用,则其值会被绑定到调用this所在函数的最近的父对象 。不论这个this出现在什么样的函数中,层次有多深,结构多复杂,只要看直接包含它的函数即可。
② “this” always refers to the “owner” of the function we’re executing。
③ this通常指向的是我们正在执行的函数本身,或者是,指向该函数所属的对象。
④ this是Javascript语言的一个关键字,它代表函数运行时自动生成的一个内部对象,只能在函数内部使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值