함수와 메소드의 관계에 대해 질문드립니다!
몰입! 자바스크립트 질문입니다!
139페이지의 '함수와 메소드'파트에서
'함수는 오브젝트에 속해야 하며'라는 표현이 있고,
160페이지의 '함수와 메소드 차이'파트에서
'Object에 연결된 프로퍼티에서 값 타입이 function인 것을 함수라고 부르며,
Object.prototype에 연결된 프로퍼티에서 값 타입이 function인 것을 메소드라고 부릅니다.
이 기준은 자바스크립트의 모든 네이티브 오브젝트에 적용됩니다.'
라는 표현이 있습니다.
그런데 172 페이지를 읽다 보니
'글로벌 오브젝트는 new연산자로 오브젝트를 생성할 수 없으므로 메소드가 아닌 함수입니다.'
라는 표현이 있어 잘 이해가 되지 않습니다.
글로벌 오브젝트는 브라우저가 자바스크립트 실행 환경을 만드는 '렌더링'단계에서 만들어지는 빌트인 오브젝트 중 하나이고, 빌트인 오브젝트는 네이티브 오브젝트이니 앞서 160페이지에서 언급해주신 표현이 적용될 것 같은데요.
그러면 글로벌 오브젝트에 속한 프로퍼티에서 값 타입이 function인 것을 함수라고 부르는 것이 맞지 않나요?
글로벌 오브젝트라는 오브젝트 자체를 함수로 부를 수 있는 건지? 궁금합니다.
왜냐하면 저술해주신 대로 글로벌 오브젝트는 모든 프로그램을 통틀어 단 하나 존재하는, 가장 상위의 오브젝트이기 때문에 어떤 오브젝트의 프로퍼티일 수도 없는 것이니, 어떤 오브젝트의 함수일 수도 없는 것이 아닌가 생각이 듭니다.
어떤 부분에서 놓치고 있는지 알려주시면 감사하겠습니다 ㅠㅠ
답변 2
1
추가: ES6에서는 엔진 개발사에서 겉으로 표시되지 않는 글로벌 오브젝트를 가져가고 있습니다. 글로벌 오브젝트라는 이름으로 접근할 수는 없지만, 크롬 브라우저의 경우 const 변수, let 변수를 Window 오브젝트에 설정하지 않고 글로벌 오브젝트에 설정하는 형태를 취하고 있습니다.
1
'글로벌 오브젝트는 new연산자로 오브젝트를 생성할 수 없으므로 메소드가 아닌 함수입니다.' 라는 표현이 있어 잘 이해가 되지 않습니다.
==> 글로벌 오브젝트는 하나만 존재하므로(존재해야 하므로) new 연산자로 인스턴스를 생성할 수 없다는 뜻입니다. new 연산자를 사용하려면 생성자 함수가 필요합니다만, 글로벌 오브젝트는 실체가 없으므로 인스턴스를 생성할 수가 없습니다.
한편, 스펙에서 글로벌 오브젝트에 prototype 사용 여부를 엔진 개발사에 일임했습니다. 이것은 엔진 개발사에서 내부적으로 가상의 글로벌 오브젝트를 가져갈 때 가능성이 있습니다. 글로벌 오브젝트에 prototype을 연결하더라도 인스턴스를 생성할 수는 없습니다.
----------------
그러면 글로벌 오브젝트에 속한 프로퍼티에서 값 타입이 function인 것을 함수라고 부르는 것이 맞지 않나요?
==>함수라고 부르는 것이 맞습니다.
----------------
글로벌 오브젝트라는 오브젝트 자체를 함수로 부를 수 있는 건지? 궁금합니다.
==> 글로벌 오브젝트는 오브젝트 이름이므로 함수로 부를 수 없습니다. 어떤 오브젝트에도 속하지 않는 함수를 작성하면 글로벌 오브젝트의 함수가 됩니다. 단, 글로벌 오브젝트는 이름만 있고 실체(오브젝트)가 없으므로 Window 오브젝트에 설정됩니다.
프론트엔드 부트캠프 가기 전, 짧은 감사 인사드립니다!
2
109
2
섹션10 3. Object 프리미티브 값 구하기에서 질문있습니다.
1
149
2
섹션3의 1강 연산자, 표현식 강의에서 표현식 질문이 있습니다.
0
140
2
섹션 1. 6번째 강의 질문입니다.
1
247
1
선생님 Objcet 질문 있습니다.
0
299
2
forEach문을 활용한 코딩시간 풀이
0
617
1
sort 코딩 시간 풀이
0
292
1
코딩 시간 풀이 올려봅니다.
0
230
1
인덱스 코딩시간 문제풀이
0
382
1
for문 코딩 시간 답제출
0
307
1
3:39 sort에 들어가서 one,two 파라미터질문입니다.
0
194
0
퀴즈 질문 및 정답
0
356
1
오브젝트
0
283
1
인스턴스 목적
1
239
1
[코딩시간 01] 3항 연산자로 작성했을 때, 각 값..?
0
269
1
Undefined === Null; // true???
0
194
1
indexOf의 파라미터에 음수를 작성 했을때에 대한 질문입니다.
0
1031
5
length 값 변환 논리에 대한 질문입니다.
0
211
1
상수 변수 선언에 대해
0
235
1
코딩 시간 (for문) 풀이
0
255
1
Object vs object
1
502
1
코딩 시간 풀이입니다.
0
199
1
log(add(1, 2, 3, 4));
0
182
1
코딩시간 답 제출
0
200
1





