믹스인

1 개요[ | ]

mixin
믹스인
  • "메소드가 딸린 인터페이스"
  • 다른 클래스들의 메소드 조합을 포함하는 클래스
  • 원래의 클래스에 부가적인 기능을 덧붙여 확장하는 것
  • 상속과 유사한 면이 있으나 기존의 클래스를 직접 변경·확장한다는 점이 다름

2 예시: 자바스크립트[ | ]

var Halfling = function (fName, lName) {
    this.firstName = fName;
    this.lastName = lName;
}

var NameMixin = {
    fullName: function () {
        return this.firstName + ' ' + this.lastName;
    },
    rename: function(first, last) {
        this.firstName = first;
        this.lastName = last;
        return this;
    }
};

var sam = new Halfling('Sam', 'Lowry');
var frodo = new Halfling('Freeda', 'Baggs');

// 믹스인 적용
_.extend(Halfling.prototype, NameMixin);

// 이제 rename 메소드 사용 가능
sam.rename('Samwise', 'Gamgee');
frodo.rename('Frodo', 'Baggins');
var EnumerableFirstLast = (function () { // function based module pattern.
    var first = function () {
        return this[0];
    },
    last = function () {
        return this[this.length - 1];
    };
    return function () {      // function based Flight-Mixin mechanics ...
        this.first  = first;  // ... referring to ...
        this.last   = last;   // ... shared code.
    };
}());

// 배열 프로토타입에 적용
EnumerableFirstLast.call(Array.prototype);

// 배열만 선언해도 first(), last() 메소드 사용 가능
a = [1, 2, 3];
a.first(); // 1
a.last();  // 3

3 같이 보기[ | ]

4 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}