18.1 일급 객체
무명의 리터럴로 생성할 수 있다. == 런타임에 생성 가능하다.
변수나 자료구조(객체, 배열) 저장할 수 있다.
함수의 매개변수에 전달할 수 있다.
함수의 반환값으로 사용할 수 있다.
함수가 일급 객체??
함수 == 객체 : 동일하게 사용할 수 있다
객체는 값
함수는 값과 동일하게 취급,
변수 할당문, 객체의 프로퍼티 값, 배열의 요소, 함수 호출의 인수, 함수 반환문
리터럴로 정의할 수 있다.,
런타임에 함수 객체로 평가됨
함수 == 객체 | 일반 객체 |
호출 가능 | 호출 못함 |
고유의 프로퍼티 소유 | 일반 객체 프로퍼티만 있음 |
18.2 함수 객체의 프로퍼티 : 내부 보기
함수 == 객체
console.dir 메서드를 사용하여 함수 객체의 내부를 들여다보자.
빨간색: square 함수에는 __proto__ 프로퍼티 없다.
하늘색: square 함수는 Object.prototype 객체로부터 __proto__ 접근자 프로퍼티를 상속 받는다.
1. arguments 프로퍼티 --> ES3 부터 표준에서 폐지됨 (아 짜증나..나 왜 열심히 팠지)
함수 객체의
프로퍼티 키(arguments) : 프로퍼티 값(arguments 객체)
arguments 객체 : 함수 호출 시 전달된 인수들(아규먼트)들의 정보를 담고 있는 순회 가능한 유사 배열 객체이다.
함수 내부에서 지역 변수처럼 사용된다.
함수 외부에서 참조할 수 없다.
4. name 프로퍼티
5. __prote__ 접근자 프로퍼티
모든 객체는 [[prototype]] 내부 슬롯 있음
: 객체지향 프로그래밍 : 상속을 구현
__proto__ 접근자 프로퍼티를 통해 간접적으로 프로토타입 객체에 접근할 수 있음
hasOwnProperty('프로퍼티 키'); : 인수로 전달 받은 프로퍼티 키가
객체 고유의 프로퍼티 키인 경우에만 true, 상속받은 프로토타입입의 프로퍼티키인 경우 false 반환한다.
6. prototype 프로퍼티
: 생성자 함수로 호출할 수 있는 함수 객체
== constructor 만이 소유하는 프로퍼티다.
일반 객체, 생성자 함수로 호출할 수없는 non-constructor에는 prototype 프로퍼티가 없다.
'자바스크립트-스터디[2021-10-05~완료]' 카테고리의 다른 글
19장 프로토타입 (0) | 2021.11.11 |
---|---|
ajax (0) | 2021.11.11 |
17 생성자 함수에 의한 객체 생 (0) | 2021.10.31 |
16 프로퍼티 어트리뷰트 (0) | 2021.10.30 |
[4주차] 15장 let, const 키워드와 블록 레벨 스코프 (0) | 2021.10.27 |