18 함수와 일급객체

개발쟁이·2021년 4월 5일
0


컴퓨터 프로그래밍 언어 디자인에서, 일급 객체(영어: first-class object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 매개변수로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다
일급객체 조건

  • 조건, 무명의 리터럴로 생성가능,(런타임 생성가능)
  • 변수나 자료구조(객체 배열) 저장가능
  • 함수의 매개변수에 전달가능
  • 함수의 반환값으로 사용가능

함수가 일급객체라는건 함수를 객체처럼 사용할수있다
일반 객체는 호출불가능하나 함수객체는 호출가능, 고유의 프로퍼티 소유함
proto는 접근자 프로퍼티, Object.prototype 객체 프로퍼티 상속받음. (모든 객체가 상속 받아 사용가능)

함수 객체의 arguments프로퍼티 값은 arguments객체. 함수 내부에서 지역변수처럼 사용됨

함수정의할때 선언한 매게 변수는 내부 변수와 동일하게 취급, 함수 호출시 암묵적으로 매개변수 선언 후 undefined로 초기화된 이후 인수가 할당됨.

arguments 객체의 Symbol (Symbol.iterable )프로퍼티

arguments객체를 순회 가능한 자료인 이터러블로 만들기위한 프로퍼티

자바스크립트는 매개변수의 개수, 함수 호출시 인수개수 확인하지 않음. 확인을 위해 사용하는게 argument 객체 (매개변수 개수 확정할수 없는 가변 인자 함수 구현시 유용 ) arugments객체는 객체 배열 행태로 인자 담고 있으나 실제 배열 아닌 유사 배열 객체임(array like object) → length 프로퍼티 가진 객체.

array-like object 는 배열이 아니라서 메서드 사용할때 간접 호출해야함 Function.prototype.call

Function.prototype.apply

mdn called :출처

Caller 프로퍼티 (별로 안중요)

비표준 프로퍼티.. 자신을 호출한 함수 가르킴

length 프로퍼티

선언한 매개변수 개수 가르킴 이때 arguments 객체의length는 인자의 개수를, 함수 객체의 length 는 프로퍼티 매개변수 개수를 가르킴

name 프로퍼티

함수이름을 나타냄 ES5, ES6 에서 동작 다르니 주의! ES5에서는 빈 문자열을 갖으나 ES6는객체를 가리키는 식별자를 값으로 갖음

함수를 호출할때는 함수 이름아닌 객체를 가르키는 식별자로 호출한다

protp 접근자 프로퍼티

[[Prototype]]이라는 내부 슬롯을 갖고,내부슬롯은 객체지향 프로그래밍의 상속 구현하는 프로토타입 객체를 가르킴

즉,proto 내부 슬롯이 가리키는 프로토 타입 객체에 접근하기위해 사용하는 접근자 프로퍼티임

prototype 프로퍼티

생성자 함수로 호출할수있는 객체, constructor만이 소유하는 프로퍼티. Non-constructor에는 prototype 프로퍼티 없음.

profile
개발 인생

0개의 댓글

관련 채용 정보