javascript - 이에 대한 문제 지적
天蓬老师
天蓬老师 2017-06-28 09:25:33
0
5
800
으아아아

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

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(5)
滿天的星座

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

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

으아악
阿神

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

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

으아악

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

淡淡烟草味

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

으아악
曾经蜡笔没有小新

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

Ty80

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

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

으아악

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

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿