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

[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 - exitFullscreen() 메서드 - 전체화면모드 닫기 (IE11 이상)
DOM_Element JS - firstChild 속성 ★ - 첫번째 자식노드
DOM_Element JS - firstElementChild 속성 - 첫번째 자식요소 (IE9 이상)
DOM_Element JS - focus() 메서드 ★ - 포커스 주기/설정. (= focus메서드 = 포커스메서드)
DOM_Element JS - getAttribute() 메서드 ★ - 요소의 속성명 (= 속성이름) 얻기
DOM_Element JS - getAttributeNode() 메서드 - 지정한 속성노드를 객체로 얻기
DOM_Element JS - getBoundingClientRect() 메서드 - 뷰포트 기준 요소크기와 요소위치 반환 (= g…
DOM_Element JS - getElementsByClassName() 메서드 - 클래스선택자 (= 클래스명선택자 = 클래스이…
DOM_Element JS - getElementsBy태그Name() 메서드 - 태그선택자 (= 요소선택자 = 태그명선택자 = 태…
DOM_Element JS - hasAttribute() 메서드 - 지정속성소유여부 (IE9 이상)
DOM_Element JS - hasAttributes() 메서드 - 속성소유여부 (IE9 이상)
DOM_Element JS - hasChildNodes() 메서드 - 자식노드유무 체크 (= hasChildNodes메서드 = 해…
DOM_Element JS - id 속성 = 아이디 설정/반환
DOM_Element JS - innerHTML 속성 ★ - 요소내용 설정/반환 (= innerHTML속성 = 이너에이치티엠엘속성…
DOM_Element JS - innerText 속성 ★★ - 요소의 텍스트(문자열) 내용과 모든 하위 항목 설정/반환. (= i…
DOM_Element JS - insertAdjacentElement() 메서드 - 지정요소를 지정위치에 삽입 (IE8 이상)
DOM_Element JS - insertAdjacentHTML() 메서드 ★ - HTML문자열을 지정위치에 삽입 (= inser…
DOM_Element JS - insertAdjacentText() 메서드 - 텍스트문자열을 지정위치에 삽입
DOM_Element JS - insertBefore() 메서드 - 기존자식노드 앞에 새 자식노드 삽입
DOM_Element JS - isContentEditable 속성 - 요소내용 편집가능여부 표시
28/67
목록
찾아주셔서 감사합니다. Since 2012