찾다

 >  Q&A  >  본문

javascript - 이것에 대한 질문

사진에서 보시다시피, foo.call() 창의 첫 번째 매개변수는 왜 있는 걸까요?

给我你的怀抱给我你的怀抱2808일 전953

모든 응답(6)나는 대답할 것이다

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-07-05 11:08:26

    사실 문제의 핵심은 호출/적용 기능의 역할을 이해하지 못한다는 것입니다. 공식적으로는 범위 컨텍스트를 변경한다는 의미인데 여기서는 로컬 컨텍스트를 창으로 변경합니다. 실제로 call/apply는 "빌린 칼로 사람을 죽이는" 방법입니다. 즉, 특정 속성이나 메소드가 없는데 다른 객체의 속성이나 메소드를 호출하려는 경우에는 또한 객체 상속의 구현 방법이기도 합니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-07-05 11:08:26

    사실 Windows일 필요는 없고 call을 사용하는 것이 더 좋습니다. f에서 var that=this만 선언하고 클로저 함수의 this를 that으로 작성하면 됩니다. 위 함수의 환경변수는 구해오시면 됩니다. 이해가 안 되시면 저한테 물어보세요

    회신하다
    0
  • 滿天的星座

    滿天的星座2017-07-05 11:08:26

    프런트 엔드인 경우 함수에는 기본적으로 전역 변수 창을 가리키는 보이지 않는 매개변수 this가 있습니다.
    foo.call(다른 객체)과 같이 이것이 가리키는 객체를 변경하지 않는 한
    원문에서는 기본값인 this 매개변수를 사용합니다.
    주석에는 이것이 window를 가리킨다고 명확하게 명시되어 있습니다

    몇 문장 더 쓰겠습니다. 그렇지 않으면 명확하게 말씀드리겠습니다

    으아악

    또한, 이것의 의미는 이 함수를 호출하는 객체를 가리키는 것입니다.
    각 함수에는 호출할 개체가 필요합니다.
    obj.f()는 f가 obj에 의해 호출된다는 의미입니다.
    프런트 엔드에서 호출 개체를 지정하지 않으면 기본값은 함수를 호출하는 전역 변수 창입니다

    회신하다
    0
  • 怪我咯

    怪我咯2017-07-05 11:08:26

    JavaScript가 설계되면 내부 함수(예: 함수 본문의 함수)가 전역 개체(예: 창)에 바인딩됩니다. 여기 주석은 foo.call(window) js 언어를 사용하여 this.x를 설명해야 한다고 생각합니다. foo()는 10을 출력합니다.

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-07-05 11:08:26

    foo.call의 첫 번째 매개변수가 반드시 window여야 한다는 것은 아닙니다. 질문의 요점은 call이 무엇인지 이해하는 것입니다.

    https://developer.mozilla.org...

    회신하다
    0
  • 阿神

    阿神2017-07-05 11:08:26

    call, Apply, Bind의 기능과 차이점을 이해할 수 있습니다

    회신하다
    0
  • 취소회신하다