2017-09-08 1 views
0

AsyncFunction - JavaScript on MDN이라는 기사가 있습니다. 두 Mozzila 파이어 폭스 (55)와 구글 크롬 아직AsyncFunction이 정의되어 있지 않지만 MDN에 문서로 사용됩니다.

new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody) 

이 생성자는 전혀 정의되지 않은 : 그것은 다음 코드를 보여줍니다

enter image description here enter image description here

내가 (async function() {}).constructor 정말 AsyncFunction 것을 발견 ,하지만 전 세계적인 범위에서 그것을 볼 수없는 이유는 무엇입니까?

+2

흠 ... 당신은 신중하게 충분히 문서를 읽어 did'n, "그 AsyncFunction 글로벌 개체가 아닙니다 _ 참고 ... _ ". – Teemu

답변

4

Mozilla 문서에서 언급 한 것처럼 "AsyncFunction은 전역 객체가 아닙니다."

따라서 다른 글로벌 생성자와 마찬가지로 window 개체의 속성으로 액세스 할 수 없습니다. 워드 프로세서에서

: 한는 async 기능의 인스턴스를 심문하여 얻을 수 있어야 그것이 사람들뿐만 아니라 혼동 것은 놀라운 일이 아니다 그래서

const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor; 
+0

그 이유가 무엇입니까? –

+2

그 이유는 언급하지 않았지만 원시 인스턴스화에 비해 'async' 키워드의 사용을 권장하면서도 예제와 같은 프로그래밍 방식의 사용에 대한 액세스를 제공 할 수 있다고 상상합니다. –

1

문서 자체가 혼동됩니다. 참조 개체

MDN의 문서는 AsyncFunction는 전역 객체 아니라고 말해, 아직 그들은이 글로벌의 목록! 죄송합니다.

이 예기치 않은 동작에 이르게.

> f1 = function() {}; 
[Function: f1] 
> f1 instanceof Function 
true 

을하지만이되지 않습니다 :이 작동 그것은 기본적으로 같은 작품

:

> f2 = async function() {} 
[AsyncFunction: f2] 
> f2 instanceof AsyncFunction 
ReferenceError: AsyncFunction is not defined 

난 당신이 사용할 수있는 unexposed 모듈을 썼다 패트릭의 답변에 나온 예제가 있지만 당신은 기억할 필요가 없다. 그것을 조정해라.

더 많은 정보를 원하시면이 질문을 참조 :

관련 문제