개발자 면접 단골질문 자바스크립트 this

Sdílet
Vložit
  • čas přidán 29. 08. 2024

Komentáře • 100

  • @userpark
    @userpark Před 43 minutami

    어쩌다가 지나가다 강의를 보게되었네요.
    Javascript가 많이 복잡해져가네요.
    다른 언어에서는 this는 Instance화 된 자기 자신을 지칭하는데, Javascript는 그때, 그때 다른 Case By Case네요...
    순수언어가 중요하다고 다시 느낍니다.
    그래야 거기에 대입할수 있겠죠.
    일단, Windows Form 프로그램의 this가 sender와 비슷한 하고, bind는 실제 윈도우 이벤트 메소드에 파라메터 값으로 전달 됩니다.
    '=>' 이건 람다식을 이용할때 사용하며, 실제 윈도우 이벤트에 bind 개념이 포함되어져 있습니다.
    웹개발 안한지 15년이 지난, C#/Delphi개발자의 의견이었습니다. ^^
    시간이 지난 강의였지만 지금봐도 너무너무 좋은 명강의 잘 봤습니다.

  • @BillionaireAzalea
    @BillionaireAzalea Před rokem +3

    const ageTest= {
    unit: "살",
    ageList: [10,20,30],
    getAgeList: function (){
    const result = this.ageList.map((age)=>{
    return age.toString()+ this.unit;
    });
    console.log(result);
    }
    }
    ageTest.getAgeList();
    처음 쓰인 this가 ageTest를가리키니까, 화살표 함수를 사용해서 this를 계승시켜주면, unit을 받아오게 하고, Not a number를 피하기 위해서 age에 toString()으로 변화시켜주고 다시 unit을 더해줘봤습니다.

  • @user-wr9gs3zo1t
    @user-wr9gs3zo1t Před 5 měsíci +1

    JS Array의 map 메소드의 콜백 함수는 기본적으로 this가 바인딩되어 사용됩니다. map 메소드의 두번째 매개변수에 원하는 값을 this로 바인드 할 수 있습니다.

  • @torutomaktu
    @torutomaktu Před 9 měsíci +1

    이 누나는 .bind한 매력이 넘쳐

  • @user-yf3bg9mk6j
    @user-yf3bg9mk6j Před rokem

    어찌 나이가 들수록 점점 더 웃음이 많아지셔서 좋네요
    전 나이가 들수록 몇년전보다 웃음이 없어진거 같다는 생각이 드는데

  • @richardjung9875
    @richardjung9875 Před rokem +3

    헷갈리기만 하고 당장에는 굳이 안 써도 업무에 큰 무리가 없는듯 해서 아웃 오브 안중이었는데 알고보니 생각보다 더 야속한 문법이었네요… 친절한 설명 감사합니다. 언젠가 다른 프로젝트를 할때 이 야속함을 이용해야만 해야 할 날이 올 수도 있겠지요.

  • @rlehxmrrhdeo
    @rlehxmrrhdeo Před rokem +3

    와...방금 이거 고민하고 있었는데ㅋㅋㅋ영상 감사합니다!

  • @user-jc6ti9xu7u
    @user-jc6ti9xu7u Před rokem +1

    진짜 이 분은 대박이네...맨날 그렇게 인터넷으로 this 찾아보고도 완전히 내 게 안됐는데...

  • @T라미숙해-9914
    @T라미숙해-9914 Před rokem

    와.... 안 그래도 지금 자바스크립트에서 this 이거 하는중인데 이해가 안 갔는데 알고리즘 무슨일이에요 ㅠㅠ 누나 감사합니다 !!

  • @calebj8428
    @calebj8428 Před rokem +10

    1) const result = this.ageList.map(function(age){
    return age + ageTest.unit;
    });
    2) const result = this.ageList.map((age)=>{
    return age + this.unit;
    });

  • @user-wn1wb1ne8d
    @user-wn1wb1ne8d Před rokem

    정말 감사합니다..화살표함수까지 설명흐름 개쩔어여ㅜ

  • @Jinseo1905
    @Jinseo1905 Před rokem

    화살표함수를 포함한 함수표현식이 호이스팅이 안 되는 것처럼 형태는 함수이지만 자바스크립트는 절반만 함수로 인정해주는 느낌이네요 뭔가

  • @user-pw7jn1pq3m
    @user-pw7jn1pq3m Před rokem

    누나~~ 날씨가 추워요~~ 감기 조심하세요

  • @mensol3270
    @mensol3270 Před rokem +4

    const result = this.ageList.map(function(age){
    return age+this.unit;
    },ageTest);
    console.log(result);

  • @Hong-Mu
    @Hong-Mu Před rokem +1

    유익 그 자체

  • @KienNguyen-ku1jt
    @KienNguyen-ku1jt Před rokem +1

    언제나처럼 훌륭한 비디오. 더 풀어주세요

  • @itsmylife-nowOrNever
    @itsmylife-nowOrNever Před 11 měsíci

    쿠라닮은 귀여운 누나의 실버버튼 언박싱 하는 날을 보름달을 보며 기원할게요 ㅎㅎㅎ

  • @Gil_1122
    @Gil_1122 Před rokem

    ㅋㅋㅋㅋ재밌고 유용한 영상 그잡채, 잘 보고갑니다 :)

  • @yeorinim2sida
    @yeorinim2sida Před rokem +3

    코딩은 모르겠고 이뻐서 봅니다 😍😍😍😍🤩

  • @minhyunglee6550
    @minhyunglee6550 Před rokem +1

    좋은 강의 감사합니다😊

  • @want-you-kr
    @want-you-kr Před rokem

    진짜 유익합니다..

  • @devenvbok6153
    @devenvbok6153 Před rokem +1

    .apply(this) or .bind(this).😀 one of the starangest programming languages out there.

  • @black_model_x
    @black_model_x Před rokem +2

    쉽게 말하면 현재 실행 컨텍스트 기준 가장 가까운 상위 object 타입 레퍼런스 임

    • @jeffrey0208
      @jeffrey0208 Před rokem +1

      감사 :) 쉽게 말하면 현재 실행 컨텍스트 기준 가장 가까운 상위 object 타입 레퍼런스 설명 깔끔!!

  • @ZondyYT
    @ZondyYT Před rokem

    손이 진짜 예쁘다...

  • @jeffrey0208
    @jeffrey0208 Před rokem +1

    화살표함수의 놀라운 차이를 깨닳았다.. ㄴ ㅁ ㄱ 15:00

  • @hjkim1121
    @hjkim1121 Před rokem +1

    안그래도 면접때 질문 받았는데ㅎㅎㅎ

  • @_Raphael_Developer
    @_Raphael_Developer Před rokem

    3:41 바이브레이션 중독 반복

  • @user-gc7ut4mp9i
    @user-gc7ut4mp9i Před rokem

    와 유익해!

  • @whddlf1206
    @whddlf1206 Před rokem

    흠 .. map()안의 함수가 메서드가 아닌 일반함수이기 때문에 그 속의 this가 전역객체를 가리켜 NaN이 나온걸까요? 추측을 해봅니다

  • @blackat9052
    @blackat9052 Před rokem

    혹시 map 괄호 안에서 바로 function 입력 되는 건, 어떤 extension 덕분인가요?

  • @dalfst
    @dalfst Před rokem

    18:30 부터 화면이 잘리네요~

  • @user-lv1ht1rc7p
    @user-lv1ht1rc7p Před rokem

    순수 자바스크립트로 프로그램 하지 않은 이상 개념만 알아두시고 솔직이 실무에서는 거의 쓸일없음

  • @adrianchoi546
    @adrianchoi546 Před rokem

    재밌네요. ㅎㅎ. 재능기부같은 건가.

  • @d5br5
    @d5br5 Před rokem +5

    안녕하세요. 좋은 영상 감사합니다.
    혹시 react의 함수형 컴포넌트 안에서 this 를 console 찍었을 때 undefined가 나오는 이유도 설명해주실 수 있나요?
    global(window) 아니면 객체라 생각했는데 undefined가 나올줄은 상상도 못했어서요,,
    관련하여 검색해봐도 나오지 않아서 ㅜ 혹시 아시는 분 답글 달아주실 수 있나요??

    • @Jwuice
      @Jwuice Před rokem +1

      아마 웹팩의 도움을 받고 계실텐데 그렇다면 자동으로 use strict가 활성화 되어 그렇습니다.
      use strict에 대해 알아보시면 좋을 것 같아요.

    • @d5br5
      @d5br5 Před rokem

      @@Jwuice 와 머리가 띵하네요... 감사합니다!

    • @devenvbok6153
      @devenvbok6153 Před rokem

      👍 In React, when you log "this" you may get undefined. Here is a great example that you can run
      function f2() {
      'use strict'; // see strict mode
      return this;
      }
      console.log(f2() === undefined); // true
      In the functional React class, when you log this, "this" is bound to the functional react class and not bound to the inheritance object.

  • @Bluetooth46726
    @Bluetooth46726 Před 8 měsíci

    ㅋㅎㅋㅎ 살려줘 ㅋㅎㅋㅎㅋ넘재밋다

  • @_JEh
    @_JEh Před rokem

    빨리 구독자 10만되세요~!!

  • @mensol3270
    @mensol3270 Před rokem

    이직 시기인데 굿 정보

  • @user-vc2su3fz4b
    @user-vc2su3fz4b Před rokem

    마지막 부분에 NaN, NaN, NaN이 출력되는 이유를 한번만 설명을 해주실 수 있을까요?
    제가 이해한 것은 ageTest.getAgeList();로 호출되었기에 getAgeList 내부에서 사용하는 this는 ageTest를 this로 가리키고, return의 this.unit 같은경우는 getAgeList처럼 따로 호출해주는 것이 없기에, 이때의 this는 window 객체를 가리켜 NaN이 출력되는 것이 맞나요?
    이를 해결하기 위해 arrowfunction을 활용하여 함수가 속해있는 곳 상위의 this 즉, ageTest의 unit을 this로 받아 10살, 20살, 30살 이렇게 출력이 되도록 코드를 바꾸는게 맞나요??
    설명을 잘해주셨는데 제가 미숙하여 조금 헷갈리네요 ㅠㅠㅠ

    • @ju2734
      @ju2734 Před 6 měsíci +1

      map이 일반함수이기 때문에 this가 window객체를 가리킨다고 알고있습니다. 아마도 map을 호출하는 객체가 window 객체인 것 같습니다.

  • @1average314
    @1average314 Před rokem

    getAgeList : function() {
    const sal = this.unit
    const result = this.ageList.map(function (age) {
    return age + sal
    화살표 함수를 안 쓴다면
    이전 영역(scope?)에 선언하고 할당하면 되지 않을까요?

    • @HMSW
      @HMSW Před rokem +1

      Map함수안에 파라미터로 콜백함수를 넣어주면 콜백함수는 map함수 내부에서 일반함수로 호출되기때문에 콜백함수안의 this는 전역객체를 참조하게됩니다.
      밖에서 정의를 했어도 콜백함수를 파라미터로 넣는 순간 this는 전역객체가 됩니다.
      넣어줄때 콜백함수에 this바인딩을 해줘서 this정보를 같이 넘겨줘야합니다.

  • @k0su442002
    @k0su442002 Před rokem

    아우 복잡하다... 실무에서 this 거의 써본적 없는데 머리 꺠지겠네..

  • @roof102
    @roof102 Před rokem

    아아 잘 이해하다가 마지막에 result에서 이해가 안가네... 화살표함수쓰면 상위디스를 계승해서 작동하는건알겠는데 일반함수일때는 왜 낫어넘버가 나오는걸까요?
    ageTest.getAgeList()로 잘 호출해서 this가 ageTest를 바라보고있는건 맞고 맵 안에서의 this는 어딜보고있는걸까요?
    스피드웨건 부탁해요~!

    • @HMSW
      @HMSW Před rokem +2

      Map안에 파라미터로 들어가는 함수는 일반함수로써 호출되는 콜백함수로 일반함수의 경우 this가 window객체(전역객체)를 바라봅니다.

    • @user-vf1tj3vg6s
      @user-vf1tj3vg6s Před rokem

      웨건->왜건

    • @user-vf1tj3vg6s
      @user-vf1tj3vg6s Před rokem

      @@HMSW 로써->로서

    • @iil3.378
      @iil3.378 Před rokem

      @@HMSW 마지막 살 문제에서 THIS 가 Wiindw 인 이유가 this.unit 이 참조하는 객체가 없어서 라고 생각하면 될까요 ???

  • @bart2865
    @bart2865 Před rokem

    이래서 저수준 언어가 아직 있는건가
    포인터를 이렇게 길게 설명해야하다니

  • @hyunsookang8782
    @hyunsookang8782 Před rokem

    this = self

  • @user-nl5ir3zk9i
    @user-nl5ir3zk9i Před rokem

    누나까지 다나카한테 빠지다니...

  • @zuny25
    @zuny25 Před rokem +1

    this is not this

  • @hyblidblackbox8847
    @hyblidblackbox8847 Před rokem +1

    눈나 넘 이뻐요

  • @BIG_TRAIN
    @BIG_TRAIN Před rokem

    예쁘시내요

  • @bloodychoco
    @bloodychoco Před 5 měsíci

    거시기하네요;) This는

  • @welcomeJava
    @welcomeJava Před rokem

    React 를 안쓰고 바닐라 js 만으로 개발해야할 시에 리액트처럼 모든 함수를 arrow function 으로 통일해서 사용하는게 좋을까요?
    몇번 써보니 가독성도 좋고 this 같은 경우에 scope 고민할 필요도 줄어들 것 같은데 혹시 단점이 있을런지..

    • @ucandoitkkk
      @ucandoitkkk Před rokem

      우선 전부 써보고 퍼포먼스나 다른 기능문제가 이상이 있으면 그때는 일반함수로 바꿔도 될 것 같아용

    • @devjun2050
      @devjun2050 Před rokem

      This를 사용하지 않다면 화살표함수로!

    • @user-vf1tj3vg6s
      @user-vf1tj3vg6s Před rokem

      있을런지->있을는지

    • @user-dz6xj9ic4g
      @user-dz6xj9ic4g Před 5 měsíci

      위의 내용을 완전히 숙지해야.. 화살표 함수로 심플함을 유지할수 있을것 같은데.. 그러라고 화살표 함수가 생긴거고.. 근데.. 다른 언어를 먼저 배웠던 사람으로서.. 자바스크립트는 입문 단계에서 정말 어려운 언어라고 생각..

  • @user-em2jy3pj6w
    @user-em2jy3pj6w Před rokem

    👍

  • @iil3.378
    @iil3.378 Před rokem

    구독 씨게눌렀습니다 누님 감사합니다

  • @minsu07311
    @minsu07311 Před rokem

    그니깐 뭐냐
    화살표 함수를 쓰도록하자!! 라는 말이신거지

    • @user-yu8so2ck1z
      @user-yu8so2ck1z  Před rokem

      어 아닌데!무조건 화살표를 쓰면 앙댄다 라는건데

  • @leva2285
    @leva2285 Před rokem

    자세히아는건 아니지만 프론트 백엔드 기타등등 그런것들을 다 할줄 아시는건가요?
    코딩에 코자도모르는상태로 영상 알고리즘떠서 보고있는데 가르치는분이시면 그냥 다할줄아시는건지 궁금해서 댓글남겨봅니다

  • @user-rc5bc7vx9b
    @user-rc5bc7vx9b Před rokem +1

    디스 쓰긴 하나요?

  • @99snipper
    @99snipper Před rokem

    이런분이 대학교 교수 하셔야됨

  • @jyoh9581
    @jyoh9581 Před rokem

    const ageTest = {
    unit:"살",
    ageList:[10,20,30],
    getAgeList1 : function(){
    const THIS = this;
    const result = this.ageList.map(function(age){ return age + THIS.unit});
    console.log('getAgeList1 : ',result);
    },

    getAgeList2(){
    const result = this.ageList.map(age=>age+this.unit);
    console.log('getAgeList2 : ',result);
    }
    };

  • @meal-skipping-worker
    @meal-skipping-worker Před rokem

    this 는 머다 버튼이다.........

  • @HENRY-pu9ix
    @HENRY-pu9ix Před rokem

    미모를 보는 것이 더 즐거워요.

  • @user-zz2mg9xi6m
    @user-zz2mg9xi6m Před rokem

    겸둥이 왔는가?

  • @iil3.378
    @iil3.378 Před rokem

    마지막 살 문제에서 THIS 가 Wiindw 인 이유가 this.unit 이 참조하는 객체가 없어서 라고 생각하면 될까요 ???

  • @spongeb2798
    @spongeb2798 Před rokem

    😊😊😊😊😊😊😊😊😊😊

  • @iparken
    @iparken Před rokem

    다나카 알고리즘 탓네 ㅋㅋㅋㅋㅋㅋㅋㅋ

  • @fistakr
    @fistakr Před rokem

    스파게티 소스 만들어 놓은 놈들한테 디스는 많이 했는데..

  • @Jays-zw5li
    @Jays-zw5li Před rokem

    너무이뻐서 강의가 잘 안들어옴...

  • @geegee306
    @geegee306 Před rokem

    this는 생성된 객체 자기 자신의 주소값을 저장해둔 포인터 변수입니다.
    포인터가 없는 javascript에서는 어려운 개념이겠네요.

    • @user-lh4rc6uh3u
      @user-lh4rc6uh3u Před rokem

      컨텍스트에 따라 가리키는 타겟이 달라지는 포인터이기 때문에 생성된 객체라고 정해놓을 수가 없습니다 본인 스스로 혼동하고 계시네요 아마 C/C++이나 이와 유사한 정적 타이핑 언어에 기반을 두고 this를 이해하고 계신거 같은데 JS의 this는 런타임에 바인딩이 됩니다

    • @geegee306
      @geegee306 Před rokem

      @@user-lh4rc6uh3u 해당 멤버함수가 호출될때 대입되요. c++에서도 똑같이 멤버함수를 c에서 직접구현해보는 예제가 제일 이해가 빠르겠어요. 간략하게 댓글로 써둔것입니다 ㅎㅎ 추가적으로 디스에 디해 이야기하면 뭐 한도 끝오 없겠네요

    • @user-vf1tj3vg6s
      @user-vf1tj3vg6s Před rokem

      @@geegee306 되요->돼요

  • @Hyuchan1002
    @Hyuchan1002 Před rokem

    디스 ? 담배 아닙니까?ㅋ

  • @bea-dv5gp
    @bea-dv5gp Před rokem

    코딩알려주는누나가 아니고 코딩알려주는누나또는언니라고 해야되는거 아닌가요 ㅋㅋ

  • @hydropascal
    @hydropascal Před rokem

    차잘못인 사람들 특히 여성분들이 좋아하는 차 뺀츠가 드림카라니 ㅎㅎ

  • @hgu7339
    @hgu7339 Před rokem

    음....근데 궁금한 게 하나 있네요. 이전 예제에서는 const globalCar = car.getName; 이렇게 할당하고 호출하니까 this 는 window 가 맞다고 생각했는데, 마지막 예제는 map 을 호출하는 this.ageList 가 실행된 후 그 결과값이 result 에 담기는 거라서 실행 시점에는 this 가 this.ageList 라고 생각했는데 이런 경우에도 window 가 찍히는게 이해가 잘 안되네요...왜 그런 걸까요?

    • @cuihao777
      @cuihao777 Před rokem

      // this 가 window 인 경우
      Array.map1 = function (callback) {
      var result = [];

      for (var i = 0; i < this.data.length; i++) {
      result.push(callback(this.data[i]));
      }
      return result;
      };
      // this 가 array 그 자체인 경우
      Array.map2 = function (callback) {
      this.callback = callback;
      var result = [];

      for (var i = 0; i < this.data.length; i++) {
      result.push(this.callback(this.data[i]));
      }
      return result;
      };

    • @user-dz6xj9ic4g
      @user-dz6xj9ic4g Před 5 měsíci

      콜백함수는 그것을 호출하는 메서드가 어떻게 구현 되었는지에 따라 다 다릅니다..
      이전 버튼 예제에서 addEventlistener()는 자신의 this를 콜백 함수 this에 바인딩 시키죠.. map()는 바인딩 없이 콜백함수를 호출한겁니다.. 그럼 그 콜백함수는.. 호출되는 순간.. window에 this를 바인딩 시키죠..

  • @SL-lz4ij
    @SL-lz4ij Před rokem

    현대에서 제대로 이해가 되네요...호출하는놈이 결정하는거구나...