본문 바로가기

Web 프로그래밍/Javascript59

[Javascript] 비공개 프로퍼티, 메소드 자바스크립트에는 private, public, protected 와 같은 별도의 문법이 없다. 기본적으로는 객체의 모든 멤버는 public(공개)되어 있다. 공개가 되었다는 뜻은 외부에서 해당변수의 접근이 가능하다는 것이다.간단한 예제를 보자 비공개 멤버(private)별도의 문법은 존재하지 않지만 클로저를 이용하여 구현할 수 있다. 생성자 함수안에서 클로저를 만들면 유효범위안의 변수는 생성자 함수 외부에 노출 되지 않지만 객체의 공개 함수에서는 사용이 가능하다. 위와 같이 간단히 비공개 멤버를 구현할 수 있다. 비공개 멤버의 주의점비공개 변수값을 배열이나 객체를 반환하게 되면 비공개 변수 값을 수정할 수 있다. 따라서 비공개멤버를 반환할 때는 객체나 배열이 아닌 변수를 반환하는 것이 좋으며 객체나 배열.. 2016. 6. 6.
[Javascript] 의존관계 선언 패턴 객체생성패턴의 두 번째로는 의존관계선언 패턴 이다.의존관계 : 어느 사물의 존재나 성질이 다른 사물에 의하여 규정되고 제약되는 관계 ( 사전적 정의 ) 말이 어렵긴 하지만 소스코드를 보면 이해가 쉬울 것이다.예를 들어 window.history.go(-1); 을 사용한다고 가정했을 시에 위의 소스와 같이 var his = window.history; 를 변수로 선언하여 사용한다.window.history 는 전역이고 his 지역이다.위와 같은 방식을 의존관계선언 패턴이라고 한다. 프로그래밍을 해본 사람의 입장에서는 당연하고 간단한 패턴이지만 상당한 장점들이 있다.1) 의존관계가 명시적으로 선언 되어 있어 코드를 사용하는 사람이 페이지에 포함시켜야 하는 파일이 무엇인지 알 수 있다. 2) 함수의 첫머리에 .. 2016. 6. 6.
[Javascript] 네임스페이스(namespace) 패턴 ※ 네임스페이스 패턴네임스페이스 패턴을 사용하는 이유는 수많은 함수, 객체, 변수들로 전역으로 되어 선언 되어 있는 것을 줄이고자 하는데 큰 목적이 있다.이와 같은 패턴을 사용하는 이유는 전역변수를 적게 쓰면 미세하게나마 메모리를 줄일 수 있고, 작은 홈페이지를 만드는데에는 큰 지장이 없으나 규모가 큰 홈페이지를 만들었을 시에는 라이브러리, 트래킹코드 등 서드파티(3자)의 코드를 삽입하게 될 때 변수명의 충돌을 방지할 수 있다. 꼭 사용하길 바란다. 간단한 예제를 보자전역객체 5개를 생성했던 일반 코드에서 1개로 줄였다.네임스페이스 패턴을 적용시에 전역객체인 MYAPP을 한 개만 생성하여 해당 객체에 프로퍼티를 동적으로 생성하여 사용을 한다. 장점이 있다면 단점도 있다.※ 단점1. 모든 변수와 함수에 접.. 2016. 6. 6.
[Javascript] 객체생성패턴 자바스크립트 패턴을 공부하게 될 시 객체생성 패턴에 대해서 다루게 된다. 자바스크립트는 객체로 이루어진 언어이다. 이 개념은 중요하므로 꼭 숙지하고 넘어가자 객체 생성패턴에는1) 네임스페이스 패턴 2) 의존관계 선언 패턴 3) 모듈 패턴 4) 샌드박스 패턴 5) 체이닝 패턴이 있다. 다음 포스트 부터 하나씩 알아보도록 하자. 2016. 6. 6.
[Javascript] 메모이제이션과 커링 메모이제이션이란?함수에 프로퍼티를 추가하여 값을 캐시한 후에 다음 호출 시점에 복잡한 연산을 건너 뛰도록 하는 패턴예제를 보면 이해가 쉽다.func이란 함수 객체에 cache 프로퍼티를 추가하여 결과값을 저장해 놓은 뒤두번 째 호출 부터는 if(func.cache[param]) 과정을 건너뛰게 된다. 커링이란?커링은 참 신기한놈이다. 함수와 인자의 새로운 조합으로 새로운 함수를 만드는 것이다.어떤 함수를 호출할 때 대부분의 인자값이 비슷하다면 커링을 사용하는 것이 좋다. 매개변수(인자)를 일부 적용시키고 새로운 함수를 동적으로 생성 할 수 있기 때문이다. 2016. 6. 6.
[Javascript] 일급객체 자바스크립트를 공부하다 보면 함수는 일급객체 라는 용어가 자주 나타난다. 일급 객체란1) 객체를 변수에 저장할 수 있어야 한다.2) 객체를 인자로 전달할 수 있어야 한다.3) 객체에 반환값을 사용할 수 있어야 한다.4) 동적으로 프로퍼티를 생성 할 수 있어야 한다. 2016. 6. 6.