一分钟秒懂this

作者: 润东成长 | 来源:发表于2017-12-17 18:10 被阅读0次

关于 this,很多小伙伴可能都会很痛苦,或许还会遇到这样那样的问题。
那么,如何快速的理解和掌握 this 的运用呢?
等你看完我这篇文章,相信你一定会有一种豁然开朗的感觉。

对于 this,你只需要记住这样一句话:
this 初始的时候并不具有指向性,
只有「当它所在的函数被调用的时候,this 会指向调用方。
看完我下面的例子,你一定会瞬间秒懂~

    var d = {
        a: function (n) {
            console.log(this.c)
        },
        c: 'd.c'
    }
    var c = 'Window.c';
    d.a();

你还记得我刚才说的那句话吗?
this 在一开始定义的的时候并不具有指向性,
只有「当它所在的函数被调用的时候,this 会指向调用方。
在这段代码中,this 所在的函数是 a,在最后一行,通过d.a()调用,这时,this 会指向调用 a 函数的人,也就是 d,所以,console.log(this.c)这句话就会变成console.log(d.c),所以最后控制台打印出来的结果就是d.c

怎么样?是不是很简单呢?我们再来看下面这一段代码。

        var d = {
            a: function (n) {
               n()
            },
            c: 'd.c'
        }
        var c = 'Window.c';
        d.a(function () {
            console.log(this.c)
        });

我们用同样的方式来分析,this所在的函数为function () { console.log(this.c) },这个函数以参数的形式传入到 a 中,并通过代码n()实现该函数的调用,那么问题来了,n 本身就是这个函数,他的调用者是谁呢?
在 Javascript 中,所有函数的最顶层的调用对象都为全局对象 Window,所以在这段代码中,调用函数 n ( 也就是 this 所在的函数 ) 的那个人,就是全局对象 Window,所以console.log(this.c)这行代码就变成了console.log(Window.c),所以最后的输出结果就是:Window.c

看到这里,你是不是有一种豁然开朗的感觉呢?
那么上面那段代码,应该如何改才能让他继续输出d.c呢?
其实很简单,只要让调用 this 所在函数的那个人是 d 对象就好了。
没错,关键语句就是d.(function () { console.log(this.c) }),但是这样写太繁琐了,如果我想在上面那段代码的基础上进行修改,该怎么做呢?
其实也很简单,只要把 n 赋值给 d 的某个新属性(例如 d.n),然后再调用这个方法就可以啦( d.n())。完整代码如下:

        var d = {
            a: function (n) {
               d.n = n
               d.n()
            },
            c: 'd.c'
        }
        var c = 'Window.c';
        d.a(function () {
            console.log(this.c)
        });

看到这里,你就会觉得,原来 this 也没什么大不了嘛。
不过,理解 this 只是第一步,更重要的,是要学会举一反三,这样才会掌握的更加扎实、牢固。
此外,this 还有很多其他方面需要注意的,但是我相信,只要你理解了我写的这部分核心知识点,你再去看别的关于 this 的内容,也肯定会如鱼得水,十分顺利~

最后,
如果你觉得我的文章对你有帮助,
就请动动你的小手,
给我点一个赞吧,
你的赞将会是对我的最大的鼓励和支持~

同时,
也欢迎优秀的你给我提出宝贵的意见和建议,
我会不断努力,
把自己打磨的越来越优秀。

相关文章

  • 一分钟秒懂this

    关于 this,很多小伙伴可能都会很痛苦,或许还会遇到这样那样的问题。那么,如何快速的理解和掌握 this 的运用...

  • 【京剧秒懂.第三十三讲】

    致敬王珮瑜老师 【京剧秒懂 · 第三十三讲】 《秒懂 · 跨刀》 弘扬国粹秒懂...

  • 听罗品牌讲顶层分钱-(胡华蕾)学习打卡

    一分钟秒懂 ?????? ?????斑马会员商城如何赚钱? ❶斑马会员到底是什么? 其实它就像一个吃.喝.穿.玩....

  • 【京剧秒懂 · 第三十讲】

    致敬王珮瑜老师 【京剧秒懂 · 第三十讲】 《秒懂 · 自报家门》 弘扬国粹秒懂王, ...

  • 职场小白修炼之旅--秒懂办公软件

    最近选了这套工具书修炼职场技能,《和秋叶一起学秒懂三件套》,秒懂PPT,秒懂EXCEL,秒懂WORD。 不知道从什...

  • 一分钟秒懂网球

    Grand Slam就是我们耳熟能详的四大满贯,按照时间顺序依次是Australian Open(hard cou...

  • 一分钟秒懂哲学

    哲学就是智慧之学,是一种特殊的文化,是系统的理论的世界观和方法论。既告诉人们这个世界的本源是什么。也告诉人们应该要...

  • 我需要先生“秒懂我”

    我对先生有个需求,希望他秒懂我,对于我所讲的话秒懂,我要表达的意思秒懂,我需要他为我做的事情秒懂…… 一旦我感觉到...

  • 秒懂?

    “女生无理取闹的时候其实自己内心都清楚这么做是挺无理的,但女生就是这样,喜欢通过一些小事来证明,即使她错了,你也会...

  • 秒懂

    真心真意的付出,换来的是别人对自己的防备。 看问题不能看表面,抓本质才是正途。 因为,户口问题,扯出了邪恶的想法。...

网友评论

    本文标题:一分钟秒懂this

    本文链接:https://www.haomeiwen.com/subject/ihsewxtx.html