찾다

 >  Q&A  >  본문

javascript - 이에 대한 문제 지적

으아아아

위 코드 실행창 결과는 왜 나오는 걸까요?

天蓬老师天蓬老师2786일 전834

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

  • 滿天的星座

    滿天的星座2017-06-28 09:27:33

    obj.getFoo() 返回一个方程,赋值给了 f 。
    f 通过 f() 被调用,没有明确的调用者,所以 this 就是 window .

    "obj"를 얻으려면 이렇게 하면 됩니다

    으아악

    회신하다
    0
  • 阿神

    阿神2017-06-28 09:27:33

    왜냐하면 f()实际运行的地方,thiswindow,由于没有通过call或者bind改变上下文,所以输出的就是window에.

    다음과 같이 교체할 수 있습니다:

    으아악

    여기self就是指向window了,所以return self.foo就是return window.foo,也就是'window'.

    회신하다
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-28 09:27:33

    사실 가장 간단한 이해는 obj.getFoo가 f를 제공한 다음 이 메서드가 실행되는 위치를 살펴보는 것입니다.

    으아악

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

    曾经蜡笔没有小新2017-06-28 09:27:33

    f() in console.log(f()) 는 독립적으로 호출됩니다.
    1. 호출자 함수가 개체에 의해 소유된 경우 함수가 호출되면 내부 this가 개체를 가리킵니다.
    2. 함수가 독립적으로 호출되면 함수 내부의 this는 정의되지 않음을 가리킵니다.
    추천도서 http://www.jianshu.com/p/d647... 도움이 되셨으면 좋겠습니다

    회신하다
    0
  • PHP中文网

    PHP中文网2017-06-28 09:27:33

    함수 실행, 함수 본문의 이 항목은 함수 호출자를 가리킵니다

    1. 다음 코드에서 getFoo 함수의 호출자는 obj이므로 getFoo 함수 내부의 이는 obj 객체를 가리킵니다

    으아악

    2. getFoo 함수는 익명 함수를 반환하고 이를 변수 f에 할당한 다음 함수 f를 실행합니다. 이때 함수 ​​f의 호출자는 윈도우입니다. f 함수 내부에서도 창을 가리킵니다

    으아악

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