라벨이 javascript인 게시물 표시

Javascript Object

이미지
 이번 Posting에서는 javascript의 객체에 대해서 정리할 것이다. javascript는 객체 기반의 스크립트 언어이며 javascript를 이루고 있는 것은 거의 모두가 객체로 존재한다. Object Object에는 프로퍼티와 메소드가 존재한다. 이 두 요소가 객체를 완성하는 실체라고 할 수있는데 프로퍼티에 대해서 상세히 알아보자. Property 프로퍼티는 객체의 속성을 나타내는 접근 가능한 이름 그리고 활용 가능한 값을 가지는 특별한 형태라고 말할 수 있다. 이 프로퍼티라는 녀석은 특정 객체가 가지고 있는 정보를 품고 있는데, 그 정보에 직접적으로 접근할 수 있도록 해주는 역할을 한다. (예외 Proto) 객체 생성  객체를 생성하는 방법과 속성을 추가하는 방법은 아래와 같다. 1 2 var foo = {}; foo.a = 1 ;  만약  값을 할당하지 않는다면 syntax error가 발생한다. 또한 property의 삭제는 undefined나 null을 할당한다고해서 메모리가 해제되는 것이 아니다. 반드시 delete keyword를 사용해야 한다. Method Java에서는 함수라는 것이 존재하지 않지만 javascript에서는 함수와 메소드 둘다 존재한다. 둘의 차이점은 무엇일까? 메소드는 객체가 가지고있는 동작이고 이 메소드를 수행하기 위해서는 객체를 통해서 메소드를 호출해야한다. 하지만 함수는 어떤 객체를 통해서 호출하지 않아도 된다. 그 이유는 함수 자체가 그동작을 정의한 "함수 객체"이기 때문에다. java에서는 메소드는 단지 meta data로 존재할 뿐이며 객체에 속한 동작에 대한 선언이라고 한다. 하지만 javascript에서는 메소드는 각각의 개별 객체로 존재하게 된다. 객체에 속한 meta data를 사용하는 것이 아닌 객체로부터 파생되어 확장된 새로운 객체를 사용하는 것이다. Object의 구성 ...

Javascript Variable

 이번 Posting에서는 javascript의 data type에 대하여 정리할 것이다. 수 (Number) 문자열 (String) 불린 (Boolean) 널 (Null) Undefined 객체 (Object) 다시 객체는 여러가지 타입을 가지고 있다. 함수 (Function) 배열 (Array) 날짜 (Date) 정규식 (RegExp) Number의 특징부터 차례로 보겠다. Number  javascript에서는 변수 선언을 할 때, data type을 명시하지 않는다. 1 var x = 1 ; 위와 같이 변수 선언을 하는데, x라는 변수가 어떤 data type을 갖을지 모르기 때문에 casting이 중요하다. casting에는 다음과 같이 2가지가 존재한다. 1 2 3 4 5 6 var x = 15.0 ; var i = parseInt (x, 16 ); > f var y = 010.333 ; var f = parseFloat (y); > 10.333 parseInt() 함수의 두 번째 파라미터는 진법을 나타낸다. 만약 적지 않는다면 1번째 파라미터가 문자열로 "010"이 들어왔다면 8진수 결과 값을 출력할 것이다. 참고) NaN은 숫자가 아닌 값, 무한의 표현은 Infinity, -Infinity String String은 2byte 유니코드 문자들의 연결 구조이다. Method 값은 경우는 java와 사용법이 같다. 또 javascript에는 값이 없음을 나타내는 Null, 그리고 값이 초기화되지 않았음을 나타내는 undefined 이 존재한다. 둘의 차이점은 null은 개발자가 의도적으로 비어 있는 값을 할당한 것이고, undefined는 애초에 어떤 값도 할당되지 않은 것을 나타낸다. 1 2 3 4 5 6 7 8 9 10 11 12 console....

Javascript prototype 기초

이미지
 보통 javascript를 처음 접하게 되는 것은 웹을 공부할 때가 대부분일 것이다. 언어를 배울 때, javascript는 진입 장벽이 낮다고 평가된다. 즉 쉽게 배울 수 있는 언어라는 의미이다. 나 또한 쉽다고 생각을 했었다. 그러나! prototype이라는 단어를 듣고 그게 뭐지? 라는 생각을 했다. 간단하게 얘기를 하자면 JAVA나 C++ 같은 언어에서는 클래스라는 것이 존재하지만 javascript에는 클래스가 없고, 또한 동적으로 계속 변하는 클래스는 아니면서 클래스의 역할을 하는 녀석이 존재한다. 예제를 한번 보자. 1 2 3 4 5 function Person() { // 클래스의 역할을 한다. } var newPerson = new Person(); console.log(newPerson); function이 클래스의 역할을 하고 또 setter, getter가 따로 없다. newPerson 객체를 생성하고 log를 찍었을 때의 모습이다. __proto__ 라는 녀석이 보일 것이다. 이 속성이 newPerson을 만들기 위해 사용된 객체원형에 대한 숨겨진 연결 이다.   "newPerson 객체의 프로토타입은 어떤 객체이다" 라는 것을 알려준다. 이 어떤 객체는 constructor 속성과 __proto__ 속성을 가지고 있는데, constructor( 생성자)는 function Person() 이라는 의미이다. new Operator를 통해 만들어진 newPerson객체는 function Person()을 자신의 프로토 타입으로 사용하여 만들어졌다. 즉, "function Person()가 prototype 객체" 라고 할 수 있다.  위 그림을 보면 결국 마지막으로 도달하는 곳은 Object prototype임을 알 수 있다. 결국 객체의 확장은 객...