js的this指向&告别前端

68 阅读6分钟

WechatIMG532.jpeg

前言

学习js的this需要一些知识储备,需要学习了解作用域,原型,构造函数的相关知识,这样才能对学习this指向有一定的感觉,请记住一句关于this指向的口诀,谁-调用-指向谁!!!佐以以上储备知识,你一定可以学懂this的指向的。接下来让我们开始进入正题吧!

默认绑定规则

当我们在全局打印this的时候,this是指向全局window对象的。那么也就是说我在全局声明一个变量a,可以打印获得变量a的值,也可以打印window.a,得到的值是一样的,并且他们指向的也是同一个变量a。 一般情况下我们把window省略了,但是我们得清楚,window一直都存在。
注意:这里有万物皆对象的思想。

var a = '这是变量a';  // a等价于window.a
console.loh(this);  //window
console.log(a);  // '这是变量a'

隐式绑定规则

这个规则的理解比较言简意赅:谁调用指向谁。
但是理解起来很困难,我们需要一个字一个字来感受。
谁调用中的谁:谁有资格调用呢,这个谁怎么确定,看作用域链,找最近的对象是谁,我就属于谁。它可以调用,它就是直系亲属。
谁调用中的调用:这个调用指的是执行,这是this指向的必备因素之一,只有调用执行才会产生this指向,如果不执行则没有任何意义。一般来说,指的是函数的执行,函数名(),则代表函数执行了,只是区分于执行的作用域和该函数声明的位置,有些函数是全局的,有些函数是对象里面的...等等情况,需要具体分析。

// 案例1,全局声明一个函数foo1,不执行该函数,打印无结果,不存在this指向
function foo1(){
    console.log(this)
}

// 案例2
function foo2(){
    console.log(this)  // window
}
foo2()  //foo2函数执行了,所以产生this指向为window

// 案例3
var obj = {
    a:1,
    foo:function(){
        console.log(this);  // obj
        function test(){
            console.log(this)  // window
        }
        test() //test函数执行了,且它是独立函数调用
    }
}
obj.foo()   // 定义在obj对象里面的函数foo执行了,非独立调用。

看以上案例,我相信大家都能看懂,但是有一个地方可能会有疑惑,为什么test函数里面的this指向是window呢,他不是在foo函数里面的吗,原因就是它是独立函数执行。
独立函数
语法:函数名()
在函数名前无任何内容调用则为独立调用,不看是在全局作用域还是局部作用域中。独立函数调用this指向window。

PS:还有一些别的技巧但我就分享到这里了,和我的职业一样戛然而止,可能你想打我,但是你打不到嘿嘿。

结语

从事前端已经三年时间了,也失业有一阵子了,近年来开始经济大环境不好,很多公司倒闭&裁员,我也是其中之一,前几年的互联网码农热又大量人员涌入这一行业,现在行业冬季,人才和岗位需求量严重不匹配,不管是应届生还是已经入行的,大家都没有安全感。我听有些人说只要你努力成为大牛什么样的环境都能生存,对的!!这句话我百分百赞同!但是也想要稍稍反驳一下,对于大多数人来说没错就是我这样的人,就是很普通,算不上聪明,就是很普通一眼望去的芸芸众生,算不上聪明也没有那么好的命遇到别人口里所说的机遇和时代红利。有时候坚持不一定有用,我们可以选择尝试一些更合适的赛道&机会,对于还在坚持的朋友们我送上我最真诚的祝福,大家一定要保持学习才能有更多竞争力。

苦苦挣扎许久之后还是决定转行了,决定转行的昨晚,我很难过,前端就像是和我相处多年的老朋友,朝夕相处的日子里面,我没有那么努力的奔向它,了解它,为它付出的不够,然后有一天我们不得不说再见了,真的很难过,感觉辜负了这位老朋友,也没有给自己交出一张满意的答卷,我们的分别好像有点匆忙,但也是意料之中的事情,说实话我之前无数次筹谋离开这位老朋友,我以为我们会有一个正式的告别,而不是嘎然而中,真的有太多的遗憾,这份职业,那些流逝的时光也对自己。

但是我仍然非常感谢这位老朋友给我带来的一切,因为它我认识了一些大佬(虽然随着我企业微信的注销后再也无法联系),也因为它认识了很多朋友,因为它看到了人生的更多可能,看到了很多牛逼的人和风景,哭过也笑过,真的谢谢你我的老朋友。我们的路可能真的得走到这里了,老朋友我会带着我们曾经的回忆一起出发,如果有一天,我说如果,还有机会再次朝夕相处我希望不会再有那么多的遗憾(揪着自己的耳朵苦口婆心劝告)。

不过气氛也别那么伤感,新的工作还会有需要你的时候,虽然是低代码。还有这里我要感谢我的新公司的领导们,他们愿意信任我也愿意培养我一起进步,真的找工作期间崩溃了无数次,被无数次拒绝,这次是第一次被这么坚定的选择(也有别的但是因为一些互相不太接受的情况错过了),我真的哭死,真的很感激。

截止目前这个账号也没有诞生了多久(捂脸笑ing),包含本篇文章共计发表了5篇文章,文章水平确实不太行,但是我已经用我最真诚的心来写了。我一开始的预期是在本账号上记录一下我的一些知识学习和理解,就当作读书笔记那样子,但我没想到的是竟然这样也会有一个人关注我,真的很感谢这位同学的捧场😂,我的文章也收获了一个赞,很感谢这位朋友!!!如果我的辣鸡产出能对你们有帮助真的是我的荣幸!!!这位小伙伴,真的祝福你在码农之路上顺利!!!bug退退退!!!

好了再说也就是这些,我真的很话唠,以后可能会分享我新职业的一些文章,也有可能真的江湖再见了,最后祈祷一万次🙏希望我转行顺利!!!老板领导请一直这么好下去!!!!老板发大财💰我跟着发点小财😭希望所有人都顺利🙏🙏🙏