2012-01-28 2 views
2

[]의 실제 유형을보고 싶었습니다.실제 유형 프로토 타입 대 생성자를 얻으시겠습니까?

항상 apply 메소드 나 생성자를 사용할 수 있다고 생각했습니다.

그래서 시도 :

[].constructor -> (나에게 보여 주었다) function Array() { [native code] }

[].constructor.constructor이 -> (나에게 보여 주었다) function Function() { [native code] }

Object.prototype.toString.apply([])

-> (보여 줬어) "[object Array]"

,

질문

1) 믿을?

2) 왜 2 번 라인이 다른가요?

답변

2

1) 누구를 믿어야합니까?

모두입니다. 그들은 모두 정확합니다

2) 왜 2 행이 다른가요?

[].constructor 때문에 함수와 함수의 .constructorFunction 생성자이다.

마지막 줄은 개체의 내부 [[Class]] 속성을 제공합니다. 객체를 메서드의 컨텍스트로 설정하면 액세스 할 수 있으며 Object.prototype에서만 사용할 수 있습니다.

+0

"유형"을 알아내는 데 사용할 답변을 추가 한 경우이 대답이 유용 할 것입니다. –

+0

이 '함수'가 대문자 F 인 이유는 무엇입니까? –

+1

@JakubHampl : 그건 의견이나 상황의 문제입니다. 상황에 따라 첫 번째 또는 세 번째를 사용할 수 있습니다. –