태그 글목록: protoytpe

프로토타입(prototype)1 – 속성상속

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” 요소를 갖고있다.

먼저 stoogenickname을 추가해보자.

stooge.nickname ="Curly";
//stooge 
 Object {first-name: "Jerome", last-name: "Howard", nickname: "Curly"}

와 같은 결과를 갖는다.

이제 두 객체에서 nickname을 접근해보면

stooge.nickname         // "Curly"
another_stooge.nickname // "Curly"

로 같게 나온다.

another_stoogenickname을 추가해보다

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 와 같은 결과를 얻는다.