
조건 1. 무명의 리터럴로 생성할 수 있다. (즉, 런타임 생성이 가능하다.) 2. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 3. 함수의 매개변수에 전달할 수 있다. 4. 함수의 반환값으로 사용할 수 있다. JavaScript의 함수는 위의 조건을 모두 만족하므로 일급객체이다. // 1. 함수는 무명의 리터럴로 생성할 수 있다.(즉, 런타임에 생성이 가능하다.) // 2. 함수는 변수에 저장할 수 있다. // 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function(num) { return num + 1; }; const decrease = function(num) { return num - 1; }; // 2. 함수는..

참조에 의한 전달과 외부 상태의 변경 조만간 업로드하는 원시 자료형과 참조 자료형을 참조해 주세요. 원시 값은 값에 의한 전달, 객체는 참조에 의한 전달 방식으로 동작한다. 매개변수도 함수 몸체 내부에서 변수와 동일하게 취급되므로 매개변수 또한 타입에 따라 값에 의한 전달 혹은 참조에 의한 전달 방식을 그대로 따른다. // 매개변수 primitive는 원시 값을 전달받고, 매개변수 obj는 객체를 전달받는다. function changeVal(primitive, obj) { primitive += 100; obj.name = 'Kim'; } // 외부 상태 var num = 100; var person = { name : 'Lee' }; console.log(num); // 100 console.log(..

프로토타입 객체 (= 프로토타입) 프로토타입 객체(줄여서 프로토타입)는 어떤 객체의 상위(부모) 객체의 역할을 하는 객체로서 다른 객체에 공유 프로퍼티(메서드 포함)를 제공한다. 프로토타입을 상속받은 하위(자식) 객체는 상위 객체의 프로퍼티를 자신의 프로퍼티처럼 자유롭게 사용할 수 있다. 모든 객체는 [[prototype]] 이라는 내부 슬롯을 가지며, 이 내부 슬롯의 값은 프로토타입의 참조다.(null인 경우도 있다) [[prototype]]에 저장되는 프로토타입은 객체 생성 방식에 의해 결정된다. 즉, 객체가 생성될 때 객체 생성 방식에 따라 프로토타입이 결정되고 [[prototype]]에 저장된다. 모든 객체는 하나의 프로토타입을 갖는다. 그리고 모든 프로토타입은 생성자 함수와 연결되어 있다. 즉,..

프로토타입 (Prototype) JavaScript는 명령형, 함수형, 프로토타입 기반, 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어이다. C++, Java 같은 클래스 기반 객체지향 프로그래밍 언어의 특징인 클래스와 상속, 캡슐화를 위한 키워드인 publice, private, protected, interface 등이 없어서 자바스크립트는 객체지향 언어가 아니라고 오해하는 경우도 있다. 하지만 JavaScript는 클래스 기반 객체지향 프로그래밍 언어보다 효율적이며 더 강력한 객체지향 프로그래밍 능력을 지니고 있는 프로토타입 기반의 객체지향 프로그래밍 언어다. JavaScript는 객체 기반의 프로그래밍 언어이며 JavaScript를 이루고 있는 거의 '모든 것'이 객체이다. (원시 ..