문자열, 숫자, boolean, undefined, null
실수
로 처리하며 C언어의 double 타입처럼 64 비트 부동소수점 형태로 저장된다. 기본 타입을 제외한 모든 값 (객체, 배열, 함수, 정규표현식 등)
key : value
형태의 프로퍼티들을 가지는 컨테이너다. var foo = {
name: 'foo',
major : 'art'
}
console.log(foo.name) // 'foo'
console.log(foo['name']) // 'foo' -- 접근하려는 프로퍼티 이름을 문자열로 만들지 않으면 toString이라는 메서드를 호출하여 문자열로 바꾸려는 시도함
var objA = { name : 'JS'};
var objB = objA // objA의 참조값을 가져옴, 같은 객체를 가리키게 됨
objB.name = 'Python';
console.log(objA.name); // 'Python'
console.log(objB.name); // 'Python'
var a = 100;
var objC = { value : 100 };
function changeArg(num, obj){
num = 200;
obj.value = 200;
console.log(num); // 200
console.log(obj); // {value : 200}
}
console.log(a); // 100
console.log(objC); // { value : 200 }
객체를 생성하고 콘솔창에 해당 객체를 출력해보면 [[Prototype]] 이라는 프로퍼티가 있다. 크롬 브라우저의 경우 __proto__
로 되어있다. [[Prototype]]는 객체의 부모를 나타내며 모든 객체는 자신의 부모의 역할을 하는 객체와 연결되어 있다. 프로토타입 객체 또는 프로토타입이라고 부른다. 객체는 부모의 프로퍼티를 자신의 것 처럼 사용할 수 있다.
// 배열의 push 메소드
var arr = [1,2,3];
arr.push(4); // 배열의 ✔️length 값의 위치✔️에 해당 값을 추가한다.
console.log(arr); // [1,2,3,4]
console.log(1 == '1') // true
console.log(1 === '1') // false