Backbone: extend vs defaults

발생일: 2014.03.01

키워드: backbone, 백본, extend, defaults

문제:
extend와 defaults 를 어떻게 구분해 사용하면 좋을까 고민하던 중에, 최근 팀에서 사용 방법을 정의했다.


해결책:

extend는 주로 프로토타입 확장에서 사용했었는데,

var fooPrototype = {
    getName: function () {},
    setName: function () {}
};

var barPrototype = _.extend(fooPrototype, {
    getName: function () {}
});


// 하지만 이렇게 하면 `fooPrototype`의 값도 덮어쓰게 된다.
fooPrototype.getName === barPrototype.getName; //—> true

// 우린 주로 빈 객체에 할당하는 방법으로 처리했었는데,
var barPrototype = _.extend({}, fooPrototype, {
    getName: function () {}
});
fooPrototype.getName === barPrototype.getName; //—> false


// 아래처럼 _defaults 로 처리하면 더 간단한다.
var barPrototype = _.defaults({
    getName: function () {}
}, fooPrototype);
fooPrototype.getName === barPrototype.getName; //—> false 
저작자 표시 비영리 변경 금지
신고