create()
var stooge = { "first-name" : "Jerome", "last-name" : "Howard" }; var another_stooge = Object.create(stooge);
Object.create(stooge); 를 통해
stooge 오브젝트와 another_stooge는 프로토타입으로 연결되었다.
좀 더 정확히 말하면 another_stooge가 stooge의 요소를 상속받고 있다.
stooge와 another_stooge 모두 “first-name”, “last-name” 요소를 갖고있다.
먼저 stooge에 nickname을 추가해보자.
stooge.nickname ="Curly";
//stooge Object {first-name: "Jerome", last-name: "Howard", nickname: "Curly"}
와 같은 결과를 갖는다.
이제 두 객체에서 nickname을 접근해보면
stooge.nickname // "Curly" another_stooge.nickname // "Curly"
로 같게 나온다.
another_stooge에 nickname을 추가해보다
another_stooge.nickname ="Moe";
그리고 두 객체에서 nickname을 접근해보면
stooge.nickname // "Curly" another_stooge.nickname // "Moe"
stooge의 nickname은 변경이 안되었다.
사실 another_stooge 도 변경됬다기 보다는
nickname 요소를 another_stooge객체 자신이 갖고있는 것과 stooge객체에서 상속받은것 두개인것이다.
대신 자신의 요소를 먼저 바라본다. 이를 확인해보기위해 nickname요소를 삭제해본다.
delete
객체의 요소를 삭제할때는 delete를 사용한다.
delete another_stooge.nickname;
이 때 자신의 것만 삭제되고 상속받은 것은 삭제되지 않아 계속 nickname접근이 가능하다.
stooge.nickname // "Curly" another_stooge.nickname // "Curly"
프로토타입의 요소로 접근되는것이라 stooge 와 같은 결과를 얻는다.