탑크리에듀(www.topcredu.co.kr), 송석원 교수의 IT기술칼럼#1
자바스크립트는 ES6버전에서 class 키워드를 도입했습니다. 자바스크립트는 객체지향 언어였지만 다른 객체지향언어처럼 사용하기에는 많은 불편함이 있었습니다. 심지어 자바스크립트는 객체지향언어라고 볼 수 없다고 하는 분들도 있었을 정도였죠. 최근에 선풍적인 인기를 얻고 있는 React, Angular 같은 기술은 클래스 문법을 채택했습니다. 따라서, 클래스 문법에 대한 이해가 깊다면 새로운 기술을 습득할 때 많은 도움이 될 것 입니다.
다른 객체지향 언어와 자바스크립트의 차이를 이해하지 못하고 사용하게 되면 많은 문제점이 발생합니다. 안타깝지만 자바스크립트를 사용하고 있는 개발자들 중에서도 제대로 이해하고 사용하시는분은 많지 않은 듯 합니다.
이를 해소하기 위해서 새로 도입한 문법이 class 키워드로 대표되는 클래스 문법입니다. 객체지향 개발방법의 익숙한 개발자들을 위해서 자바스크립트가 새로운 문법을 도입한 것 입니다. 개인적으로 “JavaScript: The Good Parts”의 저자이신 Douglas Crockford 님께서 이를 어떻게 생각하는지 궁금합니다. 자바스크립트를 자바처럼 사용하는 것에 우려를 표하셨었는데, 그 사이 많은 시간이 지났으므로 입장이 바뀌었을지 궁금하군요. 선도적인 개발자들은 ES6에서 도입한 클래스 문법이 좋은 것인가 나쁜 것인가를 갖고 토론을 하기도 합니다.
자바스크립트는 ES6버젂에서 class 키워드를 도입했습니다. 자바스크립트는 객체지향 얶어였지맊 다른 객체지향얶어처럼 사용하기에는 맋은 불편함이 있었습니다.
심지어 자바스크립트는 객체지향얶어라고 볼 수 없다고 하는 분들도 있었을 정도였죠. 최근 선풍적읶 읶기를 얻고 있는 React, Angular 같은 기술은 클래스 문법을 채택했습니다. 따라서 클래스 문법에 대핚 이해가 깊다면 새로욲 기술을 습득핛 때 맋은 도움이 될 것 입니다. 다른 객체지향 얶어와 자바스크립트의 차이를 이해하지 못하고 사용하게 되면 맋은 문제점이 발생합니다. 안타깝지맊 자바스크립트를 사용하고 있는 개발자들 중에서도 제대로 이해하고 사용하시는 분은 맋지 않은 듯 합니다.
10. 사용자 정의 변수 관리기준
스칼라 변수는 선언 된 위치에 따라 세 가지
범위로 분류됩니다. 필드, 메소드 매개 변수 및
로컬 변수입니다.
필드
메소드(함수) 매개변수
로컬 변수
클래스의 구조에 따른 별도의 네임
스페이스를 구성한다.
로컬변수나 매개변수는 변수 네임스
페이스를 구성한다.
11. 블록 정의
블록으로 정의된 것은 def(함수,메소드), class,
trait 선언에 따라 내부에 정의된 변수가 필드
가 되거나 로컬변수로 인식된다.
클래스나 트레이트에 블록 정의를 하면 변수는 필드로 인
식된다
함수나 메소드에 블록의 정의되면 내부에 정의된 변수는
로컬변수로 인식된다.
12. 필드 field
클래스, 객체, trait 등에 선언된 변수를 말하면 액세스
수정 자 유형에 따라 객체의 모든 메소드와 객체 외부에
서 액세스 할 수 있고, var 및 val 키워드에 따라 변경 가
능하거나 변경 불가능할 수 있다.
클래스에 정의된 필
드는 기본 public이다
13. 메소드 매개변수 : 메소드
메소드가 호출 될 때마다 메소드 내부의
값을 전달하는 데 사용되는 변수
14. 메소드 매개변수 : 클래스
일반 클래스를 정의할 때 사용되는 매개변
수는 함수에서 바로 접근해서 사용할 수 있
다.
스칼라 클래스도 매
개변수로 정의가 가
능하고 이를 내부 메
소드에서 바로 접근
가능
15. 로컬 매개변수
지역 변수는 함수, 메소드 내부에서 선언
된 변수입니다. 메소드 내에서만 접근 할 수
있다. var 및 val 키워드를 사용
함수, 메소드 내에
정의된 변수는 외
부에서 참조가 되
지 않는다.
17. Class도 매개변수 지정이 가능
클래스를 정의할 때 매개변수로 처리하고
블록표현식에서 매개변수를 참조하면 함수
와 동일하게 사용되는 것을 알 수 있다.
인스턴스를 만들때 블럭식
이 구동되는 것을 알 수 있
고 매개변수는 인스턴스에
서 접근할 수 없는 것을 알
수 있다.
24. 클래스 정의
클래스도 블럭표현식 없이 정의도 가능하지
만 내부 멤버들을 블럭표현식에 정의하면 인
스턴스 생성할 때 별도 네임스페이스를 만든
다.
B, C 클래스 인스턴스를
만들면 블럭시 내의 필드
가 할당된 것을 알 수 있
다..
25. class 정의: 매개변수
클래스를 정의할 때 매개변수로 처리하고
블록표현식에서 매개변수를 참조하면 함수
와 동일하게 사용되는 것을 알 수 있다.
인스턴스를 만들때 블럭식
이 구동되는 것을 알 수 있
고 매개변수는 인스턴스에
서 접근할 수 없는 것을 알
수 있다.