분류 전체보기 (664) 썸네일형 리스트형 13. Javascript 객체지향 프로그래밍(4) - 캡슐화 구현 1 Javascript 역시 클래스와 같은 일정 단위에서 변수와 메서드 같은 정보 값들에 대한 정보 공개 여부를 결정할 수 있어야 합니다. 일반적으로 JAVA나 C# 등의 언어에서는 public / private와 같은 키워드를 통해서 단위 별 정보 공개 여부를 결정합니다. 하지만 Javascript에는 이러한 키워드를 지원하지 않기 때문에, 다른 방법으로 정보 은닉을 설정해야 합니다. 우선 가장 기본적으로 사용하는 방식은, [var]의 사용입니다. (생성자)함수를 선언할 때, 특정 프로퍼티를 var로 선언하게 되면 이는 다른 OOP 언어들의 private와 같은 역할을 하게 됩니다. 외부에서 직접 접근할 수 없게 되고, get/set 성격의 해당 클래스 내의 메서드를 통해서만 접근할 수 있게 되는 구조를 .. "일정을 비워 둘게요" 영어로 표현해 봅시다 오늘 배워 볼 표현은, 미팅 일정을 잡거나 협력 업체 또는 팀원들과 회의 시간을 맞추는 경우에 사용 할 수 있는 표현입니다. 우리는 흔히, 약속 일정을 확정하기 어려운 경우나 일정 조정을 기다려야 하는 경우에 '일정을 비워놓겠다'는 표현을 합니다. 또는 이와 반대로 휴식을 취하기 위해 어떠한 일정도 잡아두지 않았다는 것을 설명하기 위해서 이런 표현을 하기도 합니다. 그럼 이렇게 '일정을 비워놓다'라는 표현, 영어로는 어떻게 말할 수 있을까요? 우선, 이제까지 해왔던 방식대로 직접 한 번 생각해 봅시다. '일정'은 대략 schedule 정도가 될 것 같습니다. 그리고, 여기서 핵심 표현은 '비워놓다'가 될 것 같네요. 떠오르는 단어가 있으시죠? 80%의 확률로 'empty'를 생각하셨을 것 같습니다. 맞나.. "밀린 일들이 많아요" 영어로 표현해 봅시다 오늘 배워볼 표현, 정말 많이 쓰게 되는 말입니다. 바로 "밀린 것들"이 많다는 표현이죠. 휴가를 다녀온 뒤에 쌓여있는 할 일들, 과제와 시험공부, 거기에 설거지와 청소를 비롯한 온갖 집안일들 까지... 우리의 일상을 괴롭히는(?) 여러 가지 밀린 일들에 항상 쫓기며 살기 마련입니다. 그럴 때마다 약속이나 마감 일정을 미뤄야 할 때, 밀린 일들 때문에 시간이 더 필요 하다는 표현을 종종 하곤 합니다. 자, 그럼 오늘도 한 번 생각해 보겠습니다. 과연 '밀린 일'이라는 표현을 영어로 어떻게 말해야 할까요? '아직 끝내지 못한 일'로 해야 할까요? 아니면, '연기된 일'로 표현해야 할까요? 대략 콩글리시를 신경 쓰지 않고 생각해보면 'unfinished' 혹은 'delay', 'postpone'과 같은 단어.. 13. Javascript 객체지향 프로그래밍(3) - 클래스 기반 상속 구현 4 앞서 작성했던 코드를 다시 한번 되짚어 보겠습니다. 이전에 작성했던 예제는, 자식 객체에서 자식 객체만의 프로퍼티를 prototype을 통해 선언하게 될 경우 부모 객체에 간섭이 발생하는 점을 문제점으로 지적했습니다. 이 코드를 도식화해서 문제가 해결되었는지를 살펴봅시다. function Rapper(arg) { this.rapName = arg; } Function.prototype.method = function(name, func){ this.prototype[name] = func; }; Rapper.method("setName", function(value){ this.rapName = value; }); Rapper.method("getName", function(){ return this.r.. 13. Javascript 객체지향 프로그래밍(3) - 클래스 기반 상속 구현 3 앞의 아티클에서 만들어본 예제에 대해, 한 가지 약점이 더 남아있다는 말씀을 드렸습니다. 그럼 예제를 다시 한번 살펴보면서 어떤 점이 보완되어야 하는지 살펴보겠습니다. function Rapper(arg){ this.rapName = arg; } Rapper.prototype.setName = function(value) { this.rapName = value; }; Rapper.prototype.getName = function() { return this.rapName; }; function Smtm(arg){ Rapper.apply(this, arguments); } var hype = new Rapper("SIMON D"); console.dir(hype); Smtm.prototype = hyp.. "그 일은 누가 인수인계 받나요?" 영어로 표현해 봅시다 오늘 배워볼 표현은, 퇴사나 사업의 변화에 대한 일들을 설명할 때 자주 사용할 수 있는 표현입니다. 바로 직장생활의 핵심, '인수인계'와 관련된 표현이죠. 우리는 주로 조직개편이나 누군가의 퇴사, 휴직, 휴가로 인해 부재가 생기면 특정 업무나 직책 등을 대체할 수 있는 사람이나 후임자에게 넘겨주는 인수인계 작업을 하게 됩니다. 누군가의 부재가 발생하면, 해당 업무에 대한 공백이 생기지 않도록 업무를 관리하는 게 무엇보다 중요하게 되죠? 그럼 결국 "누가 그 업무를 맡게 되는지" 가 가장 중요해지게 됩니다. 이럴 때 우리가 하게 되는 질문에 대해서 영어로 어떻게 표현하는지를 살펴보겠습니다. "앤디가 관두면 누가 그 일을 맡나요?" 라는 질문을 한다고 가정해 보겠습니다. (일단 이 문장은, 어떤 감정 표현이.. 13. Javascript 객체지향 프로그래밍(3) - 클래스 기반 상속 구현 2 앞서 살펴본 예제에서, 클래스 기반의 상속을 가장 기본적인 형태로 구현해 보았습니다. 그리고 이 구조는 하위 인스턴스 생성 단계에서 부모 클래스의 생성자를 호출하는 과정이 없어서 문제가 된다는 점도 확인했습니다. 예제를 아래와 같이 다시 한번 살펴보겠습니다. function Rapper(arg){ this.rapName = arg; } Rapper.prototype.setName = function(value) { this.rapName = value; }; Rapper.prototype.getName = function() { return this.rapName; }; function Smtm(arg){ } var hype = new Rapper("SIMON D"); console.dir(hype); .. 13. Javascript 객체지향 프로그래밍(3) - 클래스 기반 상속 구현 1 이번 아티클부터는 클래스 기반의 상속 체계를 만들어 보겠습니다. 앞서 배운 프로토타입 기반의 상속 과정과의 차이는, 객체 리터럴이 아닌 클래스 역할을 하는 함수를 통해서 상속을 구현한다는 점입니다. 글로만 읽어서는 와닿는 개념은 아닙니다. 우선 예제를 살펴보도록 합시다. function Rapper(arg){ this.rapName = arg; } Rapper.prototype.setName = function(value) { this.rapName = value; }; Rapper.prototype.getName = function() { return this.rapName; }; function Smtm(arg){ } var hype = new Rapper("SIMON D"); console.dir(.. 이전 1 ··· 67 68 69 70 71 72 73 ··· 83 다음