모던 자바스크립트 Deep Dive 18장 정리 - 함수와 일급 객체

Hyodduru ·2022년 6월 6일
0
post-thumbnail

18.1 일급 객체

🧐 일급 객체의 조건?

  1. 무명의 리터럴로 생성할 수 있다. 즉 런타임에 생성이 가능하다.
  2. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다.
  3. 함수의 매개변수에 전달할 수 있다.
  4. 함수의 반환값으로 사용할 수 있다.

👉 함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미.

18.2 함수 객체의 프로퍼티

🧐 함수 객체 프로퍼티 종류?

arguments, caller, length, name, prototype 프로퍼티

🧐 arguments는 어떨 때 쓰는 것이 유용한가?

arguments 객체는 매개변수 개수를 확정할 수 없는 가변 인자 함수를 구현할 때 유용하다.

ex)

function sum(){	
		let res = 0;
        
        for(let i = 0; i < arguments.length; i++){
        	res += arguments[i];
            }
            
            return res;
            
            }
 console.log(sum()); // 0
 console.log(sum(1,2)); // 3 
 console.log(sum(1,2,3); // 6

👉 사실 ES6에서 Rest 파라미터 도입으로 인해 굳이 사용하지 않아도 되긴 함.

🔖 hasOwnProperty 메서드? 인수로 전달받은 프로퍼티 키가 객체 고유의 프로퍼티 키인 경우에만 true를 반환하고 상속받은 프로토타입의 프로퍼티 키인 경우 false를 반환한다.

ex)

const obj = { a : 1 };

console.log(obj.__proto__ === Object.prototype); // true

consoel.log(obj.hasOwnProperty('a')); // true

🧐 prototype 프로퍼티란?

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

ex)

({}).hasOwnProperty('prototype'); // false
profile
꾸준히 성장하기🦋 https://hyodduru.tistory.com/ 로 블로그 옮겼습니다

0개의 댓글