vue.js/vue.js 2

2. vue.js의 Reactivity(반응형) 구현 | Object.defineProperty() 객체의 동작을 재정의 하는 API | get: 속성에 접근했을때의 값 정의, set: 속성의 값을 할당했을때의 값 정의

DEV-Front 2022. 7. 4. 21:39
반응형

↑전 게시글의 이 문제는 vue.js의 핵심기능인 Reactivity(반응형)를 사용해서 편하게 개발할수 있다.

 


<Object.defineProperty()>

문법은 ↓

Object.defineProperty(대상객체, 객체의 속성,{
       정의할 내용
 });

이렇게 값을 바꿀때마다 계속 화면이 바뀌는걸 Reactivity라 한다.

 

vue의 핵심은 데이터의 변화를 라이브러리에서 감지해서 알아서 화면을 자동으로 그려주는것인 Reactivity ★

이게 Data Bindings이다. 

 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>  
  <div id="app"></div>
  
  <script>
    var div = document.querySelector('#app');
    div.innerHTML = 'hello wolrd';

    //객체 선언
    var viewModel = {};

    //API -> Object.defineProperty();
    //이 정적 메서드는 객체에 새로운 속성을 직접 정의하거나
    //이미 존재하는 속성을 수정한 후, 해당 객체를 반환합니다.

    //Object.defineProperty(); -> 객체의 동작을 재정의 하는 API  
    // 문법은 ↓
    // Object.defineProperty(대상객체, 객체의 속성,{
    //     //정의할 내용
    // });

      Object.defineProperty(viewModel, 'str', {
         get: function(){
          //속성에 접근했을때의 동작을 정의한것
          console.log('접근');
        },        
        set: function (newValue) { //새로 할당된값
        //속성의 값을 할당했을때 동작을 정의한것  
        console.log('할당', newValue);
        }
      
      })
  </script>

</body>
</html>

 

반응형