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

[Object] JS - object ECMAScript 5 - 객체혁명

ECMAScript 5 (ES5)는 JS에 많은 새로운 객체 메소드 추가.

 

ES5 새로운 객체 방법

 

// 객체 속성 추가/변경

Object.defineProperty(object, property, descriptor)


// 많은 객체 속성 추가/변경

Object.defineProperties(object, descriptors)

 



// 속성에 접근

Object.getOwnPropertyDescriptor(object, property)


// 모든 속성을 배열로 반환

Object.getOwnPropertyNames(object)

 



// 열거 가능한 속성을 배열로 반환

Object.keys(object)


// 프로토 타입에 접근

Object.getPrototypeOf(object)

 



// 객체에 속성 추가 방지

Object.preventExtensions(object)


// 객체에 속성을 추가 할 수 있으면 true 반환.

Object.isExtensible(object)

 



// (값이 아닌) 객체 속성 변경 방지

Object.seal(object)


// 객체가 변경방지되어 있으면 true 반환

Object.isSealed(object)

 



// 객체 변경 방지

Object.freeze(object)


// 객체가 고정된 경우 true 반환

Object.isFrozen(object)

 

 

 

속성값 변경

 

[구문]

Object.defineProperty(object, property_name, {value : property_value})

 


 

[예제]

 

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


<script>

var hz = {

  name : "홈짱닷컴",

  host : "HOMZZANG.COM",

  open : 2012 

};


Object.defineProperty(hz, "host", {value:"Homzzang.com"})


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

</script>

 

결과보기: Homzzang.com

 

 

메타 데이터 변경

 

1.

ES5 사용하면 다음과 같은 속성 메타 데이터 변경 가능.

 

writable : true      // 속성값 변경 가능.

enumerable : true    // 속성 열거 가능.

configurable : true  // 속성 재구성 가능.

 

writable : false      // 속성값 변경 불가능.

enumerable : false      // 속성 열거 불가능.

configurable : false     // 속성 재구성 불가능.

 


 

2.

ES5를 사용하면 getter・setter 변경 가능.

 

// getter 정의

get: function() { return host }

 

// setter 정의

set: function(value) { host = value }

 


 

// hz 객체의 host 속성을 읽기전용으로 설정.

Object.defineProperty(hz, "host", {writable:false});


// hz 객체의 host 속성을 열거 불가능으로 설정.

Object.defineProperty(hz, "host", {enumerable:false});

 

 

 

모든 속성 나열

 

Object.getOwnPropertyNames(object_name)

 


 

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


<script>

var hz = {

  name : "홈짱닷컴",

  host : "Homzzang.com",

  open : 2012

};


// 속성 변경

Object.defineProperty(hz, "host", {enumerable:false});


// 모든 속성을 배열로 반환

var txt =  Object.getOwnPropertyNames(hz);


document.getElementById("demo").innerHTML = txt;

</script> 

 

결과보기 : name,host,open

 

 

열거 가능한 속성 나열

 

Object.keys(object_name)

 


 

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


<script>

var hz = {

  name : "홈짱닷컴",

  host : "Homzzang.com",

  open : 2012

};


// 속성 변경

Object.defineProperty(hz, "host", {enumerable:false});


// 열거 가능 속성을 배열로 반환

var txt =  Object.keys(hz);


document.getElementById("demo").innerHTML = txt;

</script>

 

결과보기: name,open

 

 

속성 추가

 

Object.defineProperty(object_name, "property_name", {value:"property_value"});

 


 

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


<script>

var hz = {

  name : "홈짱닷컴",

  host : "Homzzang.com",

  open : 2012

};


// 속성 추가

Object.defineProperty(hz, "code", {value:"HTML CSS JS"})


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

</script>

 

결과보기: HTML CSS JS

 

 

getter・setter 추가

 

Object.defineProperty() 메서드 사용해 Getter 및 Setter 추가 가능.

 


 

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


<script>

var hz = {name:"홈짱닷컴", host:"Homzzang.com"};


// getter 정의

Object.defineProperty(hz, "site", {

  get : function () {return this.name + " " + this.host;}

});


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

</script>


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

 

 

카운터 예제

 

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


<script>

// 객체 정의

var hz = {counter:0};


// Setter・Getter 정의

Object.defineProperty(hz, "reset", {

  get : function () {this.counter = 0;}

});

Object.defineProperty(hz, "increment", {

  get : function () {this.counter++;}

});

Object.defineProperty(hz, "decrement", {

  get : function () {this.counter--;}

});

Object.defineProperty(hz, "add", {

  set : function (value) {this.counter += value;}

});

Object.defineProperty(hz, "subtract", {

  set : function (value) {this.counter -= value;}

});


// 카운터 작동

hz.reset;

hz.add = 5;

hz.subtract = 1;

hz.increment;

hz.decrement;

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

</script> 

 

결과보기: 4



분류 제목
DOM_Element JS - tabIndex 속성 - 탭색인번호 설정/반환
DOM_Element JS - tagName 속성 - 태그명 반환 (= 태그이름 반환)
DOM_Element JS - textContent 속성 ★ - 지정노드 및 그 자손노드의 텍스트내용 설정/반환 (= textCo…
DOM_Element JS - title 속성 - 타이틀 속성값 설정/반환 (= title속성 = 타이틀속성)
DOM_Element JS - toString() 메서드 -
DOM_Event JS - abort 이벤트 (= onabort 속성) - 미디어로드중단 (= 온어보트이벤트, IE9)
DOM_Event JS - afterprint 이벤트 (= onafterprint 속성) - 인쇄모드이벤트 (= 인쇄시작 / …
DOM_Event JS - animationend 이벤트 (= onanimationend 속성) - 애니완료이벤트 (= 애니종…
DOM_Event JS - animationiteration 이벤트 (= onanimationiteration 속성) - CS…
DOM_Event JS - animationstart 이벤트 (= onanimationstart 속성) - CSS 애니메인션 …
DOM_Event JS - beforeprint 이벤트 (= onbeforeprint 속성) - 인쇄모드 인쇄대화상자 나타나기…
DOM_Event JS - beforeunload 이벤트 (= onbeforeunload 속성) - 웹문서 언로드 (= 사이트…
DOM_Event JS - blur 이벤트 (= onblur 속성) - 포커스제거이벤트 (= 포커스해제이벤트 = 블러이벤트)
DOM_Event JS - canplay 이벤트 (= oncanplay 속성) - 동영상재생가능 (= 비디오재생가능/오디오재생…
DOM_Event JS - canplaythrough 이벤트 (= oncanplaythrough 속성) - 버퍼링중지없이 재생…
DOM_Event JS - change 이벤트 (= onchange 속성) ★ - 요소값변경이벤트 (= 체인지이벤트 = 온체인…
DOM_Event JS - click 이벤트 (= onclick속성 = 온클릭이벤트) ★ - 마우스클릭이벤트
DOM_Event JS - contextmenu 이벤트 (oncontextmenu 속성) - 마우스오른쪽메뉴선택 (= 컨텍스트…
DOM_Event JS - copy 이벤트 (= oncopy 속성) - 복사이벤트 (= copy이벤트 = 카피이벤트) ※ 복사…
DOM_Event JS - cut 이벤트 (= oncut 속성) - 잘라내기이벤트 (= 컷이벤트)
31/67
목록
찾아주셔서 감사합니다. Since 2012