js中的this 关键字

本文详细探讨了JavaScript中this的关键字在单独使用、函数调用、对象方法、事件处理、Window对象方法和箭头函数中的行为差异,以及在严格和非严格模式下的表现。
摘要由CSDN通过智能技术生成

1.单独使用this

console.log(this,'全局this')

 严格和非严格模式打印结果都为window

2.普通函数的使用(用于访问当前方法所属的对象)

2.1直接调用

function a(){
    console.log(this)
}
a()

 打印的结果还是window,但是在严格模式下是undefined。

2.2对象中方法

let obj1={
    a(){
        console.log(this,this===obj1)
    },
    b:1,
    c:'hello'
}

obj1.a()

打印结果:this就是方法所属的对象obj1,可以看到this和obj1是全等的

2.3事件函数,以onclick为例

document.getElementById('sub').onclick=function(){
    console.log(this,this===document.getElementById('sub'))
}

打印结果:this指向button节点,也就是在事件函数中,this指向执行函数的节点

 2.4Window 对象方法的使用,以setTimeout()为例

function a(){
    console.log(this)
}
setTimeout(a,100)

打印结果:this指向window,因为setTimeout方法是windows下的方法

 2.5new 关键字调用函数,this 指代new出来的新的

let newthis//使用newthis是为了判断用new调用函数后的this指向,是否指向新的
function a(){
    console.log(this)
    newthis=this
}
let newa=new a()
console.log(newa===newthis)

打印结果:

3.箭头函数

箭头函数没有自己的this指向,它会向外层查找,指向外层中最近的一层指向的this。

直接全局调用:

'use strict'

const a=()=>{
    console.log(this)
}
a()

在严格模式和非严格模式都是window。

对象中的箭头函数:

let obj1={
    a:()=>{
        console.log(this)
    },
    b:1,
    c:'hello'
}
obj1.a()

箭头函数a的父级是obj1,obj1的this指向window,因此打印结果为window。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值