목록생성자 (4)
코딩쌀롱
자바스크립트는 프로토타입 기반 언어이다. 클래스 기반 언어에서는 '상속'을 사용하지만 프로토타입 기반 언어에서는 어떤 객체를 원형(prototype)으로 삼고 이를 복제(참조)함으로써 상속과 비슷한 효과를 얻는다. Constructor, prototype, instance 프로토타입을 도식으로 추상화 해본다면, const instance = new Constructor(); 1. 어떤 생성자 함수(Constructor)를 new 연산자와 함께 호출하면 2. Constructor에서 정의된 내용을 바탕으로 새로운 인스턴스(instance)가 생성된다. 3. 이때 instance에는 __proto__라는 프로퍼티가 자동으로 부여되는데, 4. 이 프로퍼티는 Constructor의 prototype이라는 프로퍼..
call 메서드 Function.prototype.call(thisArg[, arg1[, arg2[, ...]]]) call 메서드는 호출 주체인 함수를 즉시 호출하고, this 바인딩한다. 첫 번째 인자를 this로 바인딩하고, 이후의 인자들을 호출할 함수의 매개변수로 한다. apply 메서드 Function.prototype.apply(thisArg[, argsArray]) apply 메서드는 call 메서드와 기능적으로 완전히 동일하다. 두 번째 인자를 배열로 받아 그 배열의 요소들을 호출할 함수의 매개변수로 지정한다. call과의 차이는 호출 함수의 매개변수를 전달하는 방식에서만 있다. call / apply 메서드의 활용 call, apply 메서드는 명시적으로 별도의 this를 바인딩하면서 함..
전역 공간에서의 this 전역 공간에서 this는 전역 객체를 가리킨다. 전역 컨텍스트를 생성하는 주체가 전역 객체이기 때문. 브라우저에서 전역 객체는 'window', Node.js에서는 'global'이다. 전역 변수를 선언하면 자바스크립트 엔진은 전역 객체의 프로퍼티로 할당한다. 변수이면서 객체의 프로퍼티인 것. let a = 1; console.log(a); // 1 console.log(window.a); // 1 console.log(this.a); // 1 자바스크립트의 모든 변수는 특정 객체의 프로퍼티로서 동작한다. [변수 선언] 실행컨텍스트: 변수 수집 → Lexical Environment 프로퍼티로 저장 [변수 호출] 실행컨텍스트: L.E 조회 → 프로퍼티 값 반환 전역 공간에서 va..
prototype prototype은 말 그대로 객체의 원형. 함수는 객체 → 생성자도 객체 → 객체는 property를 가질 수 있고, prototype이라는 property를 가진다. (생성자 함수의 프로퍼티로 prototype을 갖는다) prototype에 저장된 속성들은 생성자를 통해서 객체가 만들어질 때 그 객체에 연결된다. function Ultra() {} Ultra.prototype.ultraProp = true; function Super() {} var t = new Ultra(); t.ultraProp = 4; Super.prototype = t; function Sub() {} Sub.prototype = new Super(); var o = new Sub(); console.log..