JS 객체지향 복습 5

2021. 7. 12. 21:25JS/객체지향

[상속된 메소드 재정의]

상속된 메소드를 재정의 할 수 있습니다. 메소드를 추가하는 동일한 방식으로 수행됩니다.

Animal.prototype.say = function(){

 return " k k k";

};

Cat.prototype = Object.create(Animal.prototype);

 

Cat.prototype.say = function(){

 return " meow meow";

};

만약 let su = new Cat()을 하게되면 su.say()를 했을 때 출력되는 값은 meow meow 가 됩니다. 

 

[관련 없는 개체 간에 일반적인 동작을 추가하려면 혼합 사용]

새나 비행기 같이 둘 다 날 수 있지만 전혀 다른 종류 일 때 사용할 수 있는 것이 혼합 기능입니다.

let flyText = function(obj) {

 obj.fly = function(){

  console.log("Fly");

 }

};

let bird = {

 name: "coke"

};

let plane = {

 model: "Air"

};

 

flyText(bird); //여기서 fly이의 기능이 각 개체에 할당됩니다. 

flyText(plane); 

 

bird.fly(); //Fly 가 출력된다. 

 

[닫기를 사용하여 개체 내의 속성이 외부에서 수정되지 않도록 보호]

공용 속성을 비공개로 만드는 가장 간단한 방법은 constructor 함수 내에 변수를 생성하는 것입니다. 그러면 constructor 함수 내의 메소드에 의해서만 접근하고 변경할 수 있습니다.

function Cat() {

 let subage = 5;

 

 this.age = function() {

  return subage; 

};

}

let su = new Cat();

su.age();

여기서 age는 전용 변수 subage에 접근할 수 있으므로 권한이 있는 메소드 입니다. 

*javascript에서 함수는 항상 해당 함수가 생성된 context에 접근할 수 있습니다. 이럴 closure라고 합니다.

 

[즉시 호출된 함수 표현식(IIF) 이해]

javascript의 일반적인 패턴은 함수가 선언되는 즉시 실행하는 것입니다. 

(function() {

   console.log("meow");

 })();

함수는 이름이 없으며 변수에 저장되지 않습니다. 함수 식의 끝에 있는 두 괄호()는 이 괄호를 즉시 실행하거나 호출하게 됩니다.  이 패턴을 즉시 호출되는 함수 식 또는 IIF라고 합니다.

 

[IIF를 사용하여 모듈 생성]

즉시 호출되는 함수 식 (IIF)을 사용하여 관련 기능을 단일 개체 또는 모듈로 그룹화하는 경우가 많습니다. 

let flyText  function(obj) {

 obj.fly = function(){

  console.log("Fly");

  };

 }

let cryText  function(obj){

 obj.cry = function(){

   console.log("meow"); 

};

}

예를 들면 이러한 두 가지 혼합물을 같은 모듈로 그룹화할 수 있습니다.

let textModule =  (function() {

  return {

     flyText : function(obj) {

        obj.fly = function(){

             console.log("Fly");

    };

   }

     cryText : function(obj){

        obj.cry = function(){

           console.log("meow") ;

   };

  }

 }

})();

 

개체 모션 모듈을 반환하는 즉시 호출된 식 (IIF)이 있습니다. 이 반환된 개체에는 개체의 속성으로 포함된 모든 혼합 동작이 포함됩니다. 모듈 패턴의 이점은 모든 모션 동작이 단일 객체로 패키지화되어 코드의 다른 부분에서 사용될 수 있다는 것입니다. 사용 예는 다음과 같습니다.

textModule.flyText(bird);

bird.flyText();

'JS > 객체지향' 카테고리의 다른 글

JS 객체지향 복습 4  (0) 2021.07.12
JS 객체지향 복습 3  (0) 2021.07.12
JS 객체지향 복습 1  (0) 2021.07.12