想要了解this的指向吗?简单聊聊函数内this的六种指向

本文面向前端初学者,详细讲解了JavaScript中函数内部this的六种不同指向:普通函数中指向window,构造函数中指向实例对象,对象方法中指向调用者,事件绑定函数中指向绑定对象,定时器中指向window,立即执行函数中也指向window。通过对这些场景的分析,帮助读者清晰掌握this的关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 初入前端的小伙伴肯定对this的指向还不太了解或者比较模糊
    • 所以给大家介绍一下关于:函数内部的六种this指向问题
      • 1.在普通函数内this指向的是------window
      • 2.在构造函数内this指向的是------实例对象
      • 3.在函数内的对象this指的是------该方法的调用者
      • 4.在事件绑定函数中this是指------绑定该事件的对象(元素)
      • 5.在定时器中this它指向的是------window
      • 6.在立即执行函数中this是指------window

// 1.普通函数
    function fn (){
        console.log(this);
        // 毫无疑问这个this指向的是window
    }
    fn()

// 2.构造函数
    function Star(uname) {
        this.uname = uname
        console.log(this);
    }
    var zzh = new Star('渣渣辉')
    //在这个构造函数中this指的是 Star{} 这个实例对象
	Star {uname: "渣渣辉"}
	//下面两个属性 都是Star这个对象中的属性
	//这个uname是传参自定义的
	uname: "渣渣辉"
	//至于这个__proto__  这个就后面说 到时候出一个原型链篇  先看的可以关注点赞(#^.^#)
	__proto__: Object

class Star {
        constructor(uname){
            this.uname = uname
        }
        speak(content){
        	// 注意看这里的this.uname  要是谁调用的这个方法,那么这个this.uname就会指向谁
            console.log(this.uname + '-说-' + content);;
        }
    }
    var zzh = new Star('渣渣辉')  // 这是渣渣辉
 	var zjl = new Star('周杰伦')  // 这是周杰伦
 	//下面两个代码都会在控制台中打印出来
 	//按顺序先是渣渣辉调用的所以是先打印  渣渣辉-说-是兄弟就来砍我  
 	//而第二个打印的就应该是周杰伦说的   周杰伦-说-我会唱:稻香
    zzh.speak('是兄弟就来砍我')
    zjl.speak('我会唱:稻香')

//4.事件绑定函数
	//在body中创建一个div  然后获取到div元素
    var div = document.querySelector('div')
    //给div添加点击事件,点击后把  this  打印到控制台
    div.onclick = function(){
        console.log(this);
        // 这边打印的是<div></div>
        // 所以是谁绑定的事件  那么this就是谁
    }

//5.定时器
    setTimeout(function(){
        console.log(this + 111);
    },1000)

    setInterval(function(){
        console.log(this + 222);
    },1500)
    //两个定时器 打印出来的都是 window  (严谨点是  object window   '万物皆对象' )

//6.立即执行函数
	(function () {
        console.log(this);
        //这里的this指向的也是window  和普通函数一样
    })()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值