JavaScript this Keyword

Поделиться
HTML-код
  • Опубликовано: 3 фев 2025

Комментарии • 547

  • @nithin1674
    @nithin1674 4 года назад +90

    "this" ain't stopping me from going forward in my path.

  • @nyxmediaentertainment8723
    @nyxmediaentertainment8723 4 года назад +201

    " 'this' references the object that is executing the current function" ..simple, yet enlightning.. thanx!

    • @Ethan-hm4qr
      @Ethan-hm4qr 3 года назад +6

      Thanks! This saved me from a lot of confusion

    • @akashkrishna1873
      @akashkrishna1873 3 года назад

      Me too commotion solved

    • @TheCashFlowHQ
      @TheCashFlowHQ 3 года назад +2

      “this” is a very useful keyword, I didn’t know it until now I wrote 5 lines of code to do its job.
      instead I could use “this” one keyword, lol.

    • @mohitrajput6007
      @mohitrajput6007 3 года назад +3

      This simple line explains the entire concept

    • @crystall_sh
      @crystall_sh 2 года назад +2

      It's not that simple you have to know it's properties where to implement it..

  • @MosheSchnitzler
    @MosheSchnitzler 3 года назад +138

    "This" was the first word I said as a baby. I can't believe that I'm still stuck here...

    • @daniyahaider6468
      @daniyahaider6468 3 года назад

      lol

    • @sohailaali2081
      @sohailaali2081 3 года назад

      Did figure it out what exactly is it?? Plaeseeeeeee explain me in simple words😭😭

    • @CapeSkill
      @CapeSkill 3 года назад +2

      @@sohailaali2081 The keyword ''this'' is basically an object that is binded to the function that is being executed.

    • @sohailaali2081
      @sohailaali2081 3 года назад

      @@CapeSkill yeah thanks but I already had figured it out last month😂😂❤️

    • @CapeSkill
      @CapeSkill 3 года назад +1

      @@sohailaali2081 It's not really as difficult as people make it seem to be.

  • @MsElsospechoso28
    @MsElsospechoso28 5 лет назад +816

    THIS is where I quit programming.

    • @ecosunflower1892
      @ecosunflower1892 5 лет назад +23

      I can feel you. Not really noob friendly but you can do it!

    • @ganeshchokhare7525
      @ganeshchokhare7525 5 лет назад +5

      first watch this, It will help you ruclips.net/video/n_9oUP1GQz0/видео.html

    • @justafreak15able
      @justafreak15able 5 лет назад +14

      How are you on every single video I watch?

    • @jagdeesh9338
      @jagdeesh9338 5 лет назад +4

      😂😂nice comment

    • @memeyan9874
      @memeyan9874 5 лет назад +1

      i think the "this" issue on javascrpt may just a historicol probrem from the source code,on me case,when i learn python code,i never have any kind of probrem like this

  • @iLoveTurtlesHaha
    @iLoveTurtlesHaha 6 лет назад +15

    Honestly, this makes so much sense to me. When people were telling me the 'this' in JavaScript is complicated I was worried that I would struggle to learn it but it makes so much sense if you stick to the rules for methods, functions, and constructor functions.

  • @bileljribi6977
    @bileljribi6977 6 лет назад +108

    I rarely make comments on RUclips, I just want say THANK YOU, this is by far the best explanation for the "this" keyword I have found!

  • @JeremyGalloway
    @JeremyGalloway 5 лет назад +47

    0:25 hands down best "this" definiton I've come across. There is an entire "You Don't Know JavaScript" book dedicated to this exact topic, yet the entire book could not explain it as well as you just did in one sentence...

    • @1998charan
      @1998charan 5 лет назад

      How about the (this & Object prototypes) portion of "You Don't Know Javascript"?
      Till that part stands Great. What is your opinion?

    • @Jimmy-vx7mk
      @Jimmy-vx7mk 5 лет назад

      @@1998charan dai ala

    • @1998charan
      @1998charan 5 лет назад

      @@Jimmy-vx7mk you came to see 'this' it seems :)
      Intha mottaiyan nalla solluvan

    • @Jimmy-vx7mk
      @Jimmy-vx7mk 5 лет назад

      @@1998charan, my dumb ass still can't understand it.

    • @nyxmediaentertainment8723
      @nyxmediaentertainment8723 4 года назад

      Yeap! I felt it too! Very well put!

  • @ganeshbabu6458
    @ganeshbabu6458 4 года назад +11

    Without you, I wouldn't have learnt Angular. You're the best lecturer out there Mosh...

  • @taleoftravels6701
    @taleoftravels6701 5 лет назад +105

    Trying to summarize 'this' after watching this video for at least 5th time:
    For fns inside Objects: 'this' refers to the object calling the function.
    For fns not called by objects - Eg call back functions - 'this' refers to the global object.
    For fns defined using arrow functions - 'this' simple refers to the object that is executing the arrow function - Irrespective of object's scope. Meaning: if the arrow function is called from a global scope? 'this' will refer to the global object. If the arrow function is called with in a function which belongs to an object?'this' will refer to the calling function's scope and in this case the object itself.

    • @dingdong8704
      @dingdong8704 4 года назад +8

      you confused about what i had learnt till now, thanks to me for reading your comment.

    • @Sinner_17
      @Sinner_17 4 года назад +4

      Can somebody summarize this comment further for me plss

    • @theSUBVERSIVE
      @theSUBVERSIVE 4 года назад +7

      I think it means that in the last example, if instead of:
      1) this.tags.forEach(function (tag) {console.log(this.title, tag}, this)
      2) this.tags.forEach((tag)=>{console.log(this.title, tag)}
      he could get the same result by using an arrow function instead because it would inherit the _this_ from above, calling the Object itself

    • @thanachon8892
      @thanachon8892 3 года назад +3

      "THIS" is all summary that I want for enlightened myself. Thank you!

    • @omageprosper9673
      @omageprosper9673 3 года назад

      thanks

  • @prabdeepdhaliwal9725
    @prabdeepdhaliwal9725 4 года назад +22

    So from my understanding:
    NOTE:
    A *method* is a function within an object.
    A *callback function* is a function passed as an argument/parameter within another function.
    ==============================================================================
    1. The *'this'* keyword *refers to the global object* (window) when using 'this' *within* a *function*
    Ex. function Hello() {
    console.log(this)

    • @DS-rv2fc
      @DS-rv2fc Год назад +2

      honestly, just use an arrow function instead of inserting "this"

    • @burekburczynski9802
      @burekburczynski9802 Год назад

      @@DS-rv2fc hi, where is the next lecture of 'this' topic? i searched on YT list but I see nothing to be continue of 'this' lecture...

    • @Rinat-p7f
      @Rinat-p7f 9 месяцев назад +2

      It's a myth that content creators keep copying. An object does not own a function, it just has a reference to a function no matter where we declare the function inside the object or outside. The "this" binding is due to 'the dot notation' which is described by ECMAScript standard "13.3.2 Property Accessors" "theObject.theProperty".
      function Hello() {
      console.log(this)
      }
      const obj = {
      hello : Hello
      }
      obj.hello() // this is obj
      const myHello = obj.hello;
      myHello() "this" will be undefined if it's 'use strict' or global object depends on host environment (node.js , browser, ect.)
      example with forEach just special case of no dot notation, arrow functions fix that because that kind of functions use parent environment which was called with dot notation)

  • @lindag5733
    @lindag5733 10 месяцев назад +2

    This might sound over-the-top but I almost feel like crying! I can now understand what my Javascript: The Comprehensive Guide, is talking about!!!! Because of this video, I now understand. I wound not give up. Your video blew the doors open for my understanding. I can literally breathe easier now. I am preparing to freelance! Thank you and God bless you :)

  • @katkodes6055
    @katkodes6055 2 года назад +1

    I've been trying to understand this for over 48 hours and I finally get it!! Thanks :)

    • @alcestabyss3305
      @alcestabyss3305 2 года назад +1

      Hi, from which sourse are you learning java script? 😊

    • @katkodes6055
      @katkodes6055 2 года назад +1

      @@alcestabyss3305 mainly the Odin project and published books

  • @oloyang431
    @oloyang431 Год назад +17

    One thing you forgot to mention is that if you use an arrow function instead regular function when using a forEach() method in your example the keyword "this" actually refers to the object, and not the global window. So basically, "this" acts differently depending on whether you're using a regular function or an arrow function.

    • @marvinalone
      @marvinalone Год назад

      because arrow function creates a closure, it's similar to
      var that = this
      this.tags.forEach(function(tag) {
      console.log(that.title, tag)
      })

    • @Akash_Unreal
      @Akash_Unreal Год назад +1

      @@marvinalone man your keywords tags that this really confused me

    • @fleurdecerisier9550
      @fleurdecerisier9550 Год назад

      😢😢

  • @rodrigoribeiro377
    @rodrigoribeiro377 5 лет назад +4

    THIS is an incredible explanation... not only about the reserverd word 'this' but also about the behaviour of structures that uses 'this' such as constructor functions. It cleared my mind. Thanks!

  • @m.smanoj4688
    @m.smanoj4688 10 месяцев назад

    AWESOMELY EXPLAINED - EVEN PAID COURSES CANNOT COME NO WAY NEAR THIS KIND OF EXPLANATION LIKE THIS

  • @kduisheev4355
    @kduisheev4355 4 года назад +210

    still could not manage to explain to my 7 yrs old brother.

    • @sukhdevduhariya3280
      @sukhdevduhariya3280 4 года назад

      hahaha

    • @mohammaddh8655
      @mohammaddh8655 4 года назад +12

      i don't know about your brother but I'm 24 and I'm fucked

    • @ayoubZaZen
      @ayoubZaZen 4 года назад +1

      @@mohammaddh8655 same hhhhhhhhhhhhhhhhhh

    • @bryanurizar
      @bryanurizar 4 года назад

      What a dumbass. A 7 year old struggling to understand this.

    • @awekeningbro1207
      @awekeningbro1207 3 года назад +13

      i tried to explain this to my 7 year old brother, then i realized i don't have one.

  • @antonmariadas7747
    @antonmariadas7747 4 года назад +7

    Best explanation ever. Simple, concise and very clear.

  • @akshaybhatt2136
    @akshaybhatt2136 2 года назад

    This is by far the best and the simplest video on 'This'

  • @swethanaik7121
    @swethanaik7121 3 года назад +9

    "This" is so well explained. Such an eye opener since I have always been confused with the "this" keyword in Javascript since it can mean different things depending on its placement unlike in Java which is pretty straightforward.

  • @Mattou2812
    @Mattou2812 6 лет назад +7

    You are a very good teacher. now i understand the basics of this thanks to you. I love your Javascript videos I've learned a lot of things thanks to you. Thanks a lot for sharing your knowledges.

  • @siddharthmagadum16
    @siddharthmagadum16 4 года назад +2

    I heard this channel a lot. By watching THIS first video, I got to know THIS is an awesome channel . Crystal clear explanation. Thanks a lot. Subscribed!

  • @ankjumper
    @ankjumper 4 месяца назад +3

    even with your brilliant teaching and demonstration, its just so confusing.

  • @stephen1569
    @stephen1569 2 года назад

    I loved this video. It untied the “this” knot in my head. MANY THANKS !!!!

  • @andrew.schaeffer4032
    @andrew.schaeffer4032 2 года назад

    Bravo. I've watched several videos on the this keyword and this is the best one yet

  • @sucesssoulman
    @sucesssoulman 4 года назад +2

    Thank you!!!! your explanation is THE BEST!!!!! I understood the concept. There is nothing difficult when someone explains it as clear as possible.

  • @alagappank1242
    @alagappank1242 3 года назад

    Only video in you tube that clears the "this" keyword concept💥

  • @CheeCarniel
    @CheeCarniel Год назад

    The best so far... clearly understood.

  • @aemre.a
    @aemre.a 2 года назад

    Cleanest "this" explanation in youtube, thanks for sharing.

  • @MohiyuddinShaikh
    @MohiyuddinShaikh 2 года назад +2

    This was one of the most beautiful explanation on "this" topic. Heading out to solve some quizzes based on this concept to solidify my learning.

  • @smilejayden-553
    @smilejayden-553 4 года назад

    Very thanks for a CLEAR explain about 'this'. Love Mosh from Korea

  • @arsheen_coder250
    @arsheen_coder250 3 года назад

    I am trying to write the points he said about this this is helping me to understand try this guys Hope you all understand in sha Allah

  • @MRAMetharam
    @MRAMetharam 2 года назад +3

    Have you even noticed that "this" is also different if you build a function using the arrow syntax vs the "function" keyword? Great video BTW.

    • @ethisfreedom
      @ethisfreedom 2 года назад

      this keyword doesn’t work on arrow function

    • @megl1cious
      @megl1cious 2 года назад

      when is in a fat arrow function, this, takes the value of the class where it belongs. In case we haven't given a class it automatically takes class as document class.

  • @BobbyBundlez
    @BobbyBundlez 5 лет назад +2

    ONE MINUTE IN AND HE ALREADY CLEARED UP SO MUCH

  • @emmanuelagwu2953
    @emmanuelagwu2953 7 месяцев назад

    Thank you so much for this explanation. it makes the concept of the "this" keyword very clear

  • @guycohen4403
    @guycohen4403 2 года назад

    Thank you for the last part with the foreach, I didn't know that callback functions behave like that I didn't know how to fix it until now

  • @cowabungatv4159
    @cowabungatv4159 5 лет назад +2

    Indeed the best tutorial on this i've seen so far

  • @deepak8586
    @deepak8586 3 года назад

    This is where I actually I learnt about this!!! thank you so much none in my college explained like this about this!

  • @atlasmaxima1418
    @atlasmaxima1418 6 лет назад +3

    Wow, I watched only the first minute and it makes so much sense now than trying to read articles about it!

    • @iLoveTurtlesHaha
      @iLoveTurtlesHaha 6 лет назад

      LMAO, I was trying to read a stupid article as well before leaving it and coming here. XD

    • @serranomorante
      @serranomorante 6 лет назад

      so true.

  • @sandysandilya3852
    @sandysandilya3852 Год назад +1

    Thanks for making it more complicated man

  • @idhamhafidz
    @idhamhafidz 5 лет назад +3

    I finally understand the part where you add this after callback funtion

  • @vancouverhp90
    @vancouverhp90 3 года назад

    This is the best explain for This keyword i've ever seen :) Thank you so much ....

  • @anifsayed3563
    @anifsayed3563 4 года назад +2

    This is by far the best explanation of this. I was struggling to understand the concept. Thank you very much.

  • @the_yugandharr
    @the_yugandharr 2 года назад

    Bro this stuff is insane. You're an amazing teacher. No doubts left. Thanks a lot Mosh!

  • @Joni67sinix
    @Joni67sinix 4 года назад

    maaann, I can't explain how much you helped me with this video. congrats for your didactics and thanks a lot!!!!

  • @2010chalupa
    @2010chalupa Год назад

    Great explanation!!! Learning Typescript here and needed a clear explanation like this one!

  • @drakecoleman9364
    @drakecoleman9364 4 года назад

    The first part of your video is th goal for every tutorial out there. And when you made those claims in the begining that you would have the best way to explain it and understand, that inherently put a lot of pressure on you from me, since this video was a quick search to go over it for a different bigger part of my learning, and this is something thats been confusing me..
    Well, tbh with you.
    You succeeded.
    Well Done man. You did amazing explaining it, and I am in your debt.

  • @domenicocucinotta2720
    @domenicocucinotta2720 3 года назад

    First Time I really understood the this keyword! Thanks Mosh,you are a 🌟

  • @Allisondeluca
    @Allisondeluca 2 года назад

    Thanks. Had to watch twice but now I understand.

  • @smrutikantnayak3652
    @smrutikantnayak3652 3 года назад

    Mosh, literally i was laughing while the console.log logged this keyword inside the call back.... A great 8 and half minutes spent.. Thank you...

  • @PoetNoPoems
    @PoetNoPoems 5 лет назад +1

    Says it’s complicated from poor teaching material then minute one of his explanation and I’ve got it. Top sh#t mate, thanx

  • @arthurnino93
    @arthurnino93 4 года назад

    Favorite tutor mentor in programming

  • @tyrodev5281
    @tyrodev5281 3 года назад

    Now "this" is what I came for! Thanks Mosh!

  • @kevinmuchene8660
    @kevinmuchene8660 3 года назад +2

    Excellent video. By using arrow function ie this.tags.forEach(tag => console.log(this, tag)) works. This is because an arrow function doesn't have its own this value. Instead, it uses this value of the enclosing lexical scope.

  • @kunalrajput4539
    @kunalrajput4539 4 года назад +1

    if you use arrow function this will refer to video object not the window object so no need to use forEach

  • @ore_bear8045
    @ore_bear8045 4 года назад

    superclass, this explanation of this is the best the world has ever seen.

  • @shubham-ghosh
    @shubham-ghosh 4 года назад

    hello.. i am from India. thanks for such a great explanation.

  • @bibekkhatri
    @bibekkhatri 4 года назад

    Mosh! your explanation is clear and concise.

  • @davidtran1360
    @davidtran1360 2 года назад

    Great video. I fully undertand "this" now

  • @mikoaj2323
    @mikoaj2323 4 года назад

    Thanks man! I understood after 3 minutes of ur video

  • @flaviohenrique5294
    @flaviohenrique5294 3 года назад

    You explain so simples and direct that I couldn't understand why I didn't figured out this before. Thanks man, best didactic ever.

  • @DavidCarrizoGuitarra
    @DavidCarrizoGuitarra 2 года назад

    Great tutorial!
    Maybe an example (in a news agency)
    const news {
    title: "A dog run away",
    subtitle: "The family is worried",
    toBlog() {
    console.log(this);
    },
    toTwit(){
    console.log(this);
    }
    };
    The object is the news if you blog it or twit it.
    I'am a music teacher but I tried to understand and explain 😁

  • @michaelrosenfeld8055
    @michaelrosenfeld8055 3 года назад

    Thank you so much for this. One simple sentence and it somewhat clicked for me.

  • @priyamganguly
    @priyamganguly 4 года назад

    A small, yet complex, topic made easy through this simple video. Thanks!

  • @kaiwensun
    @kaiwensun 6 лет назад

    tl;dr:
    case 1:
    `this` in an object method -- referencing the object.
    case 2:
    `this` in a regular function -- referencing `window` (`global` in node.js)
    case 3 - a special case inferred from case 1:
    function Video() {console.log(this);}
    new Video;
    referencing a new `Video` object, because `new` creates an empty object `{ }` and `Video` serves as a constructor method of the object.
    case 4 - a special case inferred from case 2:
    `this` in a regular function in an obj method -- referencing `window` because `this` is in a regular function.
    case 1 at 1:00
    case 2 at 2:13
    case 3 at 2:33
    case 4 at 4:35
    Note: all the four cases above are based on the assumption that nothing is tampered with by things like `call`, `apply` and `bind`.

    • @kaiwensun
      @kaiwensun 6 лет назад

      a special case that the lecture does not mention:
      based on the code in case 3,
      function Video() {this.a = 1;}
      Video.prototype = {f: function() {console.log(this);}
      Video.prototype.f(); // print out the `prototype` with `f` inside.
      var v = new Video;
      v.f(); // print out the `v` with `a` inside.

  • @samsunnaharpanna
    @samsunnaharpanna Год назад

    Thanks for this simple and understandable video.

  • @haythamkenway8343
    @haythamkenway8343 4 года назад

    This is the best explanation of 'this' keyword. Thanks a lot mosh 🙂

  • @faisal.fs1
    @faisal.fs1 4 года назад

    Mosh is always a good teacher!!

  • @Mu-tp6es
    @Mu-tp6es 5 лет назад +10

    so basically this references the parent of wherever its called unless its called in an ordinary function then it references window

    • @RickyRicheRebelle
      @RickyRicheRebelle 5 лет назад +2

      with many MANY exceptions, such as with callbacks, anonymous function expressions, arrow syntax etc etc... still very complicated

  • @benisaa1111
    @benisaa1111 4 года назад +1

    Now I really get it omg...also with the 'new' keyword, many thanks!

  • @damian1310
    @damian1310 3 года назад

    I learned something new today. I haven't idea that the second param of the forEach function could add the this keyword!

  • @itsthomasYT
    @itsthomasYT 6 лет назад

    Mosh, damet garm. Hichwaght fekr nemikardam ke behtarin moalleme donya ye Hamwatan bashe. Merci. Zemanan man ta hala 2 ta az coursato kharidam.
    I wish you could create a course about JavaScript Debugging for a real world project. There is nothing like this any where on the web.

  • @rakeshkulkarni5552
    @rakeshkulkarni5552 3 года назад +1

    Finally, I know this in Javascript,

  • @alwyschwuetz
    @alwyschwuetz Год назад

    I finally understood how this keyword works!

  • @mohdshoaib7622
    @mohdshoaib7622 Год назад

    best video to understand this keyword.

  • @musafurkankeskin8411
    @musafurkankeskin8411 Год назад

    Great, brief and simple loved it 👍

  • @relaxpinknoise
    @relaxpinknoise Год назад

    my instructor sucks in class, so thank you for explaining!!!

  • @georgeguildford90
    @georgeguildford90 4 года назад

    Thank You. You literally saved me

  • @a_maxed_out_handle_of_30_chars

    simple and to the point, thank you ;)

  • @EvenAsChrist
    @EvenAsChrist 4 года назад

    Best explanation so far

  • @cauebahia
    @cauebahia 3 года назад

    Sharp explanation! Thank you

  • @Aarmaxian
    @Aarmaxian 6 лет назад

    Thanks. A very easy to understand and abundantly clear video.

  • @两仪式-b5y
    @两仪式-b5y Год назад

    Thanks for your teaching

  • @erin1961
    @erin1961 3 года назад

    Thanks a lot, at least now I know 'this' in forEach(). Hoping to learn more

  • @manikantapabba1241
    @manikantapabba1241 4 года назад

    It helped me to move forward in React tutorials.. 👍

  • @kushalkumar4970
    @kushalkumar4970 4 года назад

    Wow! You just taught me in first 1 min which I needed the most. Thanks a ton!

  • @naumanraees2932
    @naumanraees2932 4 года назад

    Mr. Mosh you are really great sir, your teaching style, explanation and your knowledge helped me a lot to clear my ideas

  • @ShivamSingh-rj5jd
    @ShivamSingh-rj5jd 4 года назад +1

    this video is the best video about *this*

  • @therealorberon
    @therealorberon 6 лет назад +2

    I need to watch and re-watch this a few times. to get and remember it.

  • @elgary9074
    @elgary9074 4 года назад

    Well explained!. Thank you Mosh!

  • @80Vikram
    @80Vikram 4 года назад +8

    7:20 you've mentioned that's topic for next lecture. Please clarify where can I find "next lecture" ?

    • @Snoo29293
      @Snoo29293 4 года назад +3

      I don't know what exactly he was going to include in that lecture, however, for those curious to find out a way to solve that problem, from what I know, you could simply use arrow function instead of normal function, arrow function treats this differently than normal functions, that's the main reason arrow functions of ES6 are so cool, one advice I have in order to avoid errors in complicated codes is to use classes for object constructors, functions in the global scope and for object.prototype properties and use arrow functions everywhere else.

  • @1vigneshram
    @1vigneshram 4 года назад

    I really loved it mosh!!! very confused before now got clear understanding of how this works with practical knowledge

  • @vinubox
    @vinubox 4 года назад

    Superb, Crystal clear !

  • @joeyalfaro2323
    @joeyalfaro2323 3 года назад

    Very simple rule of thumb if that function is part of an object we call that function and method right so if that function is a method in an object this references that object itself otherwise if that function is a regular function which means it's not part of an object this reference is the global object which is the window object in browsers and global in node.

  • @narekmalkhasyan9636
    @narekmalkhasyan9636 4 года назад

    Thank you very much. The easiest explanation for --this--
    keyword.

  • @daniillitvinenko4348
    @daniillitvinenko4348 Год назад

    THIS IS INSANE. THANK YOU

  • @albertofabbri1543
    @albertofabbri1543 5 лет назад

    Very nice and clear explanation. Thank you very much!

  • @mdirshath4174
    @mdirshath4174 3 года назад

    Thanks for the clear explanation. You really explain complex topics easily understandable. Thank you so much!!!

  • @jackop4640
    @jackop4640 Год назад

    Thanks bro your video helped me a lot🥰

  • @SmokyBigSmoke
    @SmokyBigSmoke 4 года назад

    Amazing explanation.Thank you so much.

  • @nadhiffuadi
    @nadhiffuadi 3 года назад

    Amazing! Thank you MOSH! and.... may i know where the next lecture is?