예린lynn 2024. 7. 9. 06:50
728x90

 

객체는 '키(key) : 값(value)' 쌍으로 구성된 형태로, 배열과 함수 등이 해당된다.

//예시
let user = {
  name: "John",
  age: 30,
  isAdmin: true
}

 

 

객체 참조

  1. 객체.key
  2. 객체[ ' key ' ]
//예시
user.name
user['name']

 

 

메소드 참조

    • 메소드 : 객체의 속성 중 함수 자료형인 속성
    • 최근에는 메소드 선언을 할 때, 'function'을 쓰지 않기도 한다.
    • 객체.메소드key() : 메소드 호출. 뒤에 괄호를 써야 한다.
    • this : 메소드 내에서 자기 자신이 가진 속성임을 표시
//예시
const pet = {
 name : '구름',
 eat: function (food) {
   alert(this.name + food)
 }
}

//메소드 호출
pet.eat()

 

 

객체 수정법

  • 추가 : 기존의 객체 참조 방식과 동일
  • 삭제  : delete 객체.key
  • 수정 : 기존 객체의 key 값에 새로운 value 값 선언
  • 특정 key 조회 : in 연산자를 사용해서 객체의 key 존재 여부를 boolean 값으로 반환
  • 모든 key 조회 : for .. in 반복문을 통해 객체의 모든 key, value 접근
//예시
const obj = {
 menu1 = "apple"
 menu2 = "orange"
}

//추가
obg.menu3 = "cherry"
obj["menu4"] = "water"

//삭제
delete obj.menu1;

//수정
obj.menu1 = "soup"

//특정 key 조회
"menu1" in obj  -> true
"menu5" in obj  -> false

//모든 key 조회
for(let key in obj){
 conosle.log('key는 ${key}, value는 ${obj.key}입니다');
}

 

 

생성자 함수

  • const 객체 = new 함수 이름()
  • 함수 이름의 첫 글자는 대문자로 시작

cf) 객제지향언어의 new 연산자 : 클래스로부터 작동을 복사하여 새로운 객체 생성

     자바스크립트의 new 연산자 : 새로운 객체를 다른 객체와 연결

//예시
funciton Menu(number, name){
  this.number=number;
  this.name=name;
}

let menu1 = new Menu("1", "orange");
let menu2 = new Menu("2", "cherry");

menu1.name -> orange
menu2.number -> 2

 

 

Prototype

  • prototype은 생성자 함수에 정의한 모든 객체가 공유할 원형이다.
  • 프로토타입 객체에 속성과 메소드를 추가하면 모든 객체에서 해당 속성과 메소드 사용 가능
  • 기존에 있던 기능을 가져와 확장해야 할 때도 사용
//기본형
객체 이름.prototype.메소드 이름 = function(){ }

//예시
function Persion(name){
  this.name = name;
}
Person.prototype.name = null;
Person.prototype.introduce = fucntion(){
  return 'My name is '+this.name;
}

function Programmer(name){
  this.name = name;
}
Programmer.prototype = new Person();
Programmer.prototype.coding = function(){
  return "hello world";
}

var p1 = new Programmer('egoing');
728x90