분류 전체보기
-
[JavaScript] Instantiation Patterns카테고리 없음 2020. 2. 21. 23:16
객체 지향 프로그래밍은 수작업이 아닌 공장에서의 생산작업을 의미한다. 하나의 공장(원형)을 만든 후, 같은 성격의 제품들(인스턴스)을 계속해서 찍어내는 것이다. 자바스크립트에 class 가 등장하면서, 공장을 만들어내기가 훨씬 쉬워졌지만, 그 전에는 어떤 방식으로 인스턴스들을 만들어냈을까? 크게 다음의 네 가지 방법이 있다. 이들은 레거시 코드로 이와 같은 방식으로 코드를 작성할 일은 많지 않다. 하지만 이미 만들어진 코드를 이해하는 데 중요하므로 알아둘 필요가 있다. 1. Functional var Shoes = function(brand){ var shoeInstance = {}; shoeInstance.brand = brand; shoeInstance.run = function(){ console...
-
[JavaScript] 상속 2 : Class카테고리 없음 2020. 2. 21. 22:41
* Class 앞서 Obejct.create() 를 이용한 상속을 알아보았다. 하지만 ES6가 나오면서 class를 사용해 훨씬 간단하게 상속을 구현할 수 있게 되었다. 아래 코드는 이전 포스팅에서 Object.create()를 이용해 구현한 상속을 ES6 문법의 class 를 사용해 구현한 것이다. // Class class Shape { // class 명 constructor(){ // 기존 생성자함수 부분 this.x = 0; this.y = 0; } move(x,y){ // 기존 prototype 객체에 정의하 메소드 부분 this.x += x; this.y += y; console.info('Shape moved.'); } } class Rectangle extends Shape { const..
-
[JavaScript] Call by Value, Call by Reference카테고리 없음 2020. 2. 20. 22:59
* Call by Value : 값에 의한 호출 CBV의 특징은 값이 '그대로' 복사(deep copy)된다는 점이다. 즉, 같은 값을 가진 데이터가 메모리에 또 하나 만들어져 저장되는 것이다. // call by value let x = 2; let y = x; y = 3 x === y // false (x = 2, y = 3) 코드 네 번째 줄을 보면, y에 x의 값이 할당되어 있다. x의 값을 복사(deep copy)해서 y에 할당한 것이다. x와 y의 값은 각각 별개이므로 y값의 변화가 x에 전혀 영향을 미치지 않는다. 따라서 x===y 의 불린값은 false가 된다 (x = 2, y = 3) * Call by Reference : 참조에 의한 호출 CBR의 특징은 변수에 값이 복사되는 것이 아니..