• 회원가입
  • 로그인
  • 구글아이디로 로그인

[Object] JS - Object Prototypes - 객체프로토타입 (= 객체원형) ★

모든 JS 객체는 프로토 타입에서 속성과 메서드를 상속.

 

 

객체 생성자

이전 시간에 배운 내용 복습

 

<p id="demo"></p>


<script>

function Site(nameValue, hostValue, openValue) {

  this.name = nameValue;

  this.host = hostValue;

  this.open = openValue;

}


var hz  = new Site("홈짱닷컴", "Homzzang.com", 2012);

var sir = new Site("그누보드", "Sir.kr", 2001);


var hz_site = hz.name + " " + hz.host + " " + hz.open;

var sir_site = sir.name + " " + sir.host + " " + sir.open;

document.getElementById("demo").innerHTML = hz_site + " / " + sir_site; 

</script>

 

결과보기 : 홈짱닷컴 Homzzang.com 2012 / 그누보드 Sir.kr 2001


 

※ 기존 객체에 새 속성 추가하는 방식으로는 객체 생성자에 새 속성 추가 못함.

 

<p id="demo"></p>


<script>

function Site(nameValue, hostValue, openValue) {

  this.name = nameValue;

  this.host = hostValue;

  this.open = openValue;

}


Site.code = "HTML CSS JS JQ PHP SQL";

  

var hz  = new Site("홈짱닷컴", "Homzzang.com", 2012);

var sir = new Site("그누보드", "Sir.kr", 2001);

  

document.getElementById("demo").innerHTML = hz.code;

</script>

 

결과보기 : undefined


 

※ 생성자에 새 속성 추가하려면 생성자 함수 안에 추가해야 함.

※ 이 방법으로, 객체 속성이 기본값 갖을 수 있음. 

 

<p id="demo"></p>


<script>

function Site(nameValue, hostValue, openValue) {

  this.name = nameValue;

  this.host = hostValue;

  this.open = openValue;

  this.code = "HTML CSS JS JQ PHP SQL";

}

 

var hz  = new Site("홈짱닷컴", "Homzzang.com", 2012);

var sir = new Site("그누보드", "Sir.kr", 2001);

  

document.getElementById("demo").innerHTML = hz.code;

</script>

 

결과보기: HTML CSS JS JQ PHP SQL

 

 

프로토 타입 상속

 

1.

모든 JS 객체는 프로토 타입에서 속성과 메서드를 상속.

(예)

Date 객체는 Date.prototype에서 상속.

Array 객체는 Array.prototype에서 상속

Site 객체는 Site.prototype에서 상속

 

2.

Object.prototype은 프로토 타입 상속 체인의 맨 위에 있음.

Date 객체, Array 객체, Site 객체는 Object.prototype에서 상속됨.

 

 

 

객체에 속성과 메소드 추가 


객체에 새로운 속성 (또는 메소드) 추가 경우 : 앞장에서 배운대로 하면 됨.

객체 생성자에 새로운 속성 (또는 메서드) 추가 경우 : 지금 배우는 prototype 속성 이용하면 편함.

 

 

 

prototype 속성 - 객체 생성자에 속성・메서드 추가

 

※ JS prototype 속성 사용하면 객체 생성자에 새로운 속성 추가 가능.

 

<p id="demo"></p>


<script>

function Site(nameValue, hostValue, openValue) {

  this.name = nameValue;

  this.host = hostValue;

  this.open = openValue;

}


Site.prototype.code = "HTML CSS JS JQ PHP SQL";

var hz = new Site("홈짱닷컴", "Homzzang.com", 2012);

 

document.getElementById("demo").innerHTML = hz.code

</script>

 

결과보기 : HTML CSS JS JQ PHP SQL


 

※ JS prototype 속성 사용하면 객체 생성자에 새로운 메서드 추가 가능.

 

<p id="demo"></p>


<script>

function Site(nameValue, hostValue, openValue) {

  this.name = nameValue;

  this.host = hostValue;

  this.open = openValue;

}


Site.prototype.intro = function() {

  return this.name + " " + this.host

};


var hz = new Site("홈짱닷컴", "Homzzang.com", 2012);


document.getElementById("demo").innerHTML = hz.intro()

</script>

 

결과보기: 홈짱닷컴 Homzzang.com


 

★ 자신만의 프로토 타입만 수정. 표준 JS 객체의 프로토 타입은 수정 금지.

 



분류 제목
DOM_Event JS - dblclick 이벤트 (= ondblclick 속성) ★ - 마우스더블클릭이벤트
DOM_Event JS - drag 이벤트 (= ondrag 속성) - 마우스드래그이벤트 (IE9) ※ 드래그앤드롭
DOM_Event JS - dragend 이벤트 (= ondragend 속성) - 마우스드래그종료 (IE9)
DOM_Event JS - dragenter 이벤트 (= ondragenter 속성) - 드래그진입 (= 드래그엔터이벤트)
DOM_Event JS - dragleave -
DOM_Event JS - dragover 이벤트 (= ondragover 속성) -
DOM_Event JS - dragstart 이벤트 (= ondragstart 속성) - 마우스드래그시작 (IE9)
DOM_Event JS - drop 이벤트 (= ondrop 속성) -
DOM_Event JS - durationchange -
DOM_Event JS - ended -
DOM_Event JS - error 이벤트 (= onerror 속성) - 외부파일로드 중 에러발생시 실행 (= 에러 이벤트 …
DOM_Event JS - focus 이벤트 (= onfocus 속성) - 포커스이벤트발생
DOM_Event JS - focusin 이벤트 (= onfocusin 속성) - 해당요소(또는 자식요소) 포커스 될 때 이벤…
DOM_Event JS - focusout 이벤트 (= onfocusout 속성) - 해당요소(또는 자식요소) 포커스 잃을 때…
DOM_Event JS - fullscreenchange -
DOM_Event JS - fullscreenerror -
DOM_Event JS - hashchange -
DOM_Event JS - input 이벤트 (= oninput 속성) ★ - 입력이벤트 (= 인풋이벤트) (IE9)
DOM_Event JS - invalid -
DOM_Event JS - keydown 이벤트 (= onkeydown 속성) ★ - 키보드키누르기 (= 키보드키누름 = 키다…
32/67
목록
찾아주셔서 감사합니다. Since 2012