객체(object)란 실생활에서 우리가 인식할 수 있는 사물로 이해할 수 있다.
고양이 객체는 모두 위와 같은 속성을 가지지만, 각 속성의 값은 객체마다 전부 다를 것이다.
인스턴스 : 변수에 할당, 반환된 오브젝트.(객체)
객체란 키(key)과 값(value)으로 구성된 속성(property)의 정렬되지 않은 집합이다.
중괄호 안에서 {키 : 값, 키 : 값}과 같은 형태로 쓰인다.
키는 반드시 문자열만 올 수 있다.
속성으로는 어떠한 것이든 올 수 있다. 함수가 올 수도 있는데, 이 때 해당 함수를 메소드(method)라고 한다.
var cat = "나비"; // 일반적인 변수의 선언
// 객체도 많은 값을 가지는 변수의 하나.
var kitty = {
name: "나비",
family: "먼치킨",
age: 2,
weight: 500
};
cat // 나비
kitty.name // 나비
자바스크립트에서는 숫자, 문자열, 불리언, undefined 타입을 제외한 모든 것이 객체이다.
하지만 숫자, 문자열, 불리언과 같은 원시 타입은 값이 정해진 객체로 취급되어, 객체로서의 특징도 함께 가지게 된다.
var kitty = {
name: "나비",
family: "먼치킨",
age: 2,
weight: 500,
info : function () {
return (this.age + '살 ' + this.name);
}
};
var cat = new Object();
cat.name = "마뭉이";
cat.age = "3";
new Object()
를 통해 객체를 만든 후 속성을 부여하는 방식, 처음부터 속성을 부여하는 방식 두 가지가 있다.
var kitty = {
name: "나비",
family: "먼치킨",
age: 2,
weight: 500,
info : function () {
return (this.age + '살 ' + this.name);
}
};
console.log(kitty.name); // "홍길동"
console.log(kitty.age); // 2
console.log(kitty.info); // ƒ () { return (this.age + '살 ' + this.name); }
console.log(kitty.info()); // "2살 나비"
객체.키
나 객체["키"]
형태로 해당 객체의 키에 해당하는 값을 추출할 수 있다.
메서드에 접근할 때 ()를 붙이지 않는다면 메서드의 정의를 리턴하게 된다.
var kitty = {
name: "나비",
family: "먼치킨",
age: 2,
weight: 500,
info : function () {
return (this.age + '살 ' + this.name);
}
};
kitty.name : "마뭉이";
객체.키 = 데이터
형태로 해당 객체의 키를 변경할 수 있다.
var kitty = {
name: "나비",
family: "먼치킨",
age: 2,
weight: 500,
info : function () {
return (this.age + '살 ' + this.name);
}
};
delete kitty.name;
delete kitty.age;
delete 객체.키
로 해당 속성 한 쌍을 삭제할 수 있다.
new를 쓰지 않고 {}, []로 곧바로 선언한 객체, 배열을 리터럴이라고 부른다.
new Number, new String처럼 기존 자료형들도 new를 쓰지 않았다면 리터럴이다.
값들만 쉼표를 기준으로 나열되어 있다.
배열 안에 든 것을 요소(item)라고 부른다.
C처럼 크기를 지정해 줄 필요가 없다.
함수 선언과 함수 표현식 두 가지 방식이 있다.
함수 선언 - function add(){}
함수 표현식 - var add = function() {}
함수를 호출할 때 괄호 안에 값을 넣으면 함수 안에서 사용할 수 있는 인자로 전달된다.
return으로 함수를 종료하고 함수가 특정 값을 반환하도록 할 수 있다.
return을 지정하지 않으면 자동으로 undefined를 반환하게 된다.
객체의 속성이 된 함수를 메소드라고 부른다.