카테고리 글 목록: 자바스크립트 핵심가이드(JavaScript the Good Part)

Douglas Crockford , 더글라스 크락포드

프로토타입(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 와 같은 결과를 얻는다.

javascript에서 Object(객체)내의 element(요소) 접근

다음은 flight  객체이다.

var flight = {
	airline : "Oceanic",
	number : 815,
	departure : {
		IATA : "SYD",
		time : "2015-09-22 15:55",
		city : "Sydney" 

	},
	arrival: {
		IATA : "LAX",
		time : "2015-09-23 15:55",
		city : "Los Angeles"
	}
}

flight 객체안에 airline 요소를 접근하는 방법

  1. flight.airline      // “Oceanic”
  2. filght[“ariline”] // “Oceanic”

결과는 같다.

var stooge = {
	"first-name" : "Jerome",
	"last-name" : "Howard"
};

하지만 위  first-name 처럼 하이픈(“-“)이 들어가면 연산작업이 이루어지므로 따옴표(“) 고 감싸주어야 한다. 예약어를 굳이 사용하고자 할때도  마찬가지이다.
이때는 ‘.’으로 접근 할 수 가 없다.

  1. stooge.first-name      //NaN (x)
  2. stooge[“first-name”] // “Jerome” (o)