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

[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_Element JS - parentNode 속성 ★ - 부모노드
DOM_Element JS - parentElement 속성 ★ - 부모요소객체 (= 부모객체)
DOM_Element JS - previousSibling 속성 - 바로 이전 형제노드 (= 바로앞 형제노드 = previousS…
DOM_Element JS - previousElementSibling 속성 - 바로이전 형제요소 (= previousElemen…
DOM_Element JS - querySelector() 메서드 ★ - 쿼리선택자 (= 요소 안 지정 선택자 중 첫번째 것만) …
DOM_Element JS - querySelectorAll() 메서드 - Element객체의 쿼리선택자_전부 (= 쿼리선택자_모…
DOM_Element JS - removeAttribute() 메서드 - 요소의 지정 속성 제거 (= removeAttribute…
DOM_Element JS - removeAttributeNode() 메서드 - 속성노드제거
DOM_Element JS - removeChild() 메서드 - 자식노드제거
DOM_Element JS - removeEventListener() 메서드 ★ - 이벤트핸들러를 요소에서 제거 (IE9 이상)
DOM_Element JS - replaceChild() 메서드 - 자식노드 대체 (= replaceChild메서드 = 리플레이스…
DOM_Element JS - requestFullscreen() 메서드 - 전체화면모드로 열기 (IE11 이상. 접두어필요)
DOM_Element JS - scrollHeight 속성 - 스크롤높이 (= scrollHeight속성 = 스크롤하이트속성) (…
DOM_Element JS - scrollIntoView() 메서드 - 지정요소가 보이는 곳으로 스크롤이동 (IE8 이상)
DOM_Element JS - scrollLeft 속성 ★ - 스크롤수평위치 (= 스크롤좌우위치) ※ 새로고침 가로 스크롤바 오른…
DOM_Element JS - scrollTop 속성 ★ - 스크롤수직위치 (= 스크롤상하위치 = scrollTop속성 = 스크롤…
DOM_Element JS - scrollWidth 속성 - 스크롤수평너비 (= 스크롤수평길이 = 스크롤가로너비 = 스크롤가로길이…
DOM_Element JS - setAttribute() 메서드 - 속성설정 (※ 속성복사 가능) (= setAttribute메서…
DOM_Element JS - setAttributeNode() 메서드 ★ - 속성노드 추가설정 (예: 클래스추가) (= setA…
DOM_Element JS - style 속성 ★ - 스타일 설정/반환
30/67
목록
찾아주셔서 감사합니다. Since 2012