자바스크립트 공부에 앞서
크롬을 사용한다면 다음과 같은 방법으로 자바스크립트를 간단하게 실행해 볼 수 있다.
Ctrl+Shift+J (윈도우), 커멘트+Alt+J (OSX) 키를 누르면
콘솔 탭이 선택된 상태로 개발자 도구가 실행된다.
자바스크립트는 동적언어이다.
동적언어라는 것이 무슨 말일까?
바로 한 변수에 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당 및 재할당이 가능하다는 뜻이다.
let item = 42 // item은 숫자타입이다
item = 'thing' // item은 이제 문자열타입이다
item = true // item은 이제 불리언타입니다
이런 식으로 한 변수가 여러 타입으로 사용될 수 있다.
이제 각가의 타입에 대해 알아볼텐데
자바스크립트 언어는 크게 원시값과 객체로 나뉜다.
언어의 가장 낮은 단계에서 직접 표현되는 불변의 데이터이며 객체를 제외한 모든 타입은 불변 값(변경할 수 없는 값)을 정의한다.
원시값에는 아래와 타입이 속한다
(1) Boolean타입
(2) Null타입
(3) Undefined타입
(4) Number타입
(5) BigInt타입
임의 정밀도로 나타낼 수 있는 숫자 원시 값으로, Number타입의 안전 한계를 넘어서는 큰 정수도 안정하게 저장하고 연산할 수 있다.
호출하는 방법은 정수 끝에 n을 추가하거나 생성자를 호출해 생성할 수 있다.
(6) String타입
(7) Symbol타입
let id = Symbol();
심볼을 만들 때 심볼 이름을 붙일 수 있다.
이것은 디버깅할 때 유용하다.
led id = Symbol("id");
자바스크립트에서는 배열과 같은 기능부터 자바스크립트 위에 구축된 API들에 이르기까지 대부분의 것들이 객체이다.
객체는 관련된 데이터와 함수를 속성으로 가지는 집합니다.
또한, 객체 리터럴 구문을 사용해서 그 속성을 추가하거나 제거할 수도 있다.
속성 값으로는 다른 객체를 포함해 모든 타입을 사용할 수 있어서 복잡한 자료구조 구축이 가능하다.
속성은 키 값으로 식별하며, 키 값으로는 문자열 값이나 심볼을 사용할 수 있다.
여타 자바스크립트의 요소들과 마찬가지로, 객체를 생성하는 것은 변수를 정의하고 초기화하는 것으로부터 시작한다.
var person = {};
var person = new Object();
이렇게 중괄호를 사용하여 생성하면 된다.
객체를 생성할 때는 아래와 같은 방법으로 key(name)/value 값을 설정하면 된다.
var objectName = {
member1Name: member1Value,
member2Name: member2Value,
member3Name: member3Value
};
점 표기법
우리는 객체의 프로퍼티와 메소드에 점 표기법을 통해 접근할 수 있는데, 객체이름 person은 네임스페이스처럼 동작한다. 객체 내에 캡슐화 되어있는 것에 접근하려면 먼저 점을 입력해야한다.
person.age
person.interest[1]
person.bio()
하위스페이스
또한 우리는 다른 객체를 객체 멤버의 값으로 갖는 것도 가능하다.
예를 들어, 다음 person의 name: ['Bob', 'Smith']을
아래와 같이 바꿔보자.
name: {
first: 'Bob'
last: 'Smith'
}
이렇게 우리는 하위 네임스페이스를 만들었다.
접근하는 방법은 person.name,first 와 같은 방법으로 가능하다.
person['age']
person['name']['first']
이런 방식은 배열 속에 있는 항목에 접근하는 방법과 유사한데 실제로도 이것은 기본적으로 동일한 것이다. 한 항목을 선택하기 위해 인덱스 숫자를 이용하든 대신에 각 멤버의 값들과 연결된 이름을 이용한다.
person.age = 45;
위처럼 객체 멤버를 설정하는 것은 기존에 존재하는 프로퍼티나 메소드로 값을 설정할 뿐만아니라 아래처럼 완전히 새로운 멤버를 생성할 수도 있다.
person.farewell = function() { alert("Bye everybody!"); }
this는 지금 동작하고 있는 코드를 가지고 있는 객체를 가리킨다.
아래 예문을보자
val persion1 = {
name: 'Chris',
greeting: function() {
alert('Hi! I/'m ' + this.name + '.');
}
}
person1.greeting()은 "Hi! I'm Chris"를 출력한다.
이처럼 this는 실행중인 코드가 속해있는 객체를 의미하는데, 객체 리터럴을 직접 지정해서 사용하는 경우라면 유용하지 않겠지만, 동적으로 객체를 생성하는 경우에는 매우 유용하다.
-https://developer.mozilla.org/ko/docs/Web/JavaScript/Data_structures
-https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/Basics