2011-12-01 3 views
1

이것은 일반적인 javascript 또는 jQuery 질문 일 수 있습니다. backbone.js를 사용하고 있으며 하위 클래스에서 사용할 수있는 한 클래스에서 개인 메소드를 갖고 싶습니다. 이것이 가능한가?backbone.js의 캡슐화

var fooView = Backbone.View.extend({ 
    initialize: function() { 
    this._privateFunc(); 
    }, 
    _privateFunc: function() { 
    ... 
    } 
}); 

var subFooView = fooView.extend({ 
    initialize: function() { 
    this.coolFunc(); 
    this._privateFunc(); 
    }, 
    coolFunc: function() { 
    ... 
    } 
}); 

그러나 _privateFunc는 외부 세계에 노출되지 않습니다. 나는 자바 스크립트에서 캡슐화하기에 꽤 새로울 것이므로 확실한 대답이 있다면 나를 용서해주십시오. : D

답변

3

당신이 찾고있는 것은보다 정확하게 개인 접근 용이 아닌 protected입니다. 자바 스크립트에서 직접 구현할 방법이 없습니다.

아마도 가장 좋은 방법은 _privateFunc을 노출하는 것일 뿐이며 밑줄이있는 메소드는 하위 클래스에서만 사용하기위한 것입니다.

부모에 __noSuchMethod__을 구현 한 다음 해당 메서드가 하위 클래스에서 호출되고 보호 된 메서드를 실행하는지 확인할 수도 있습니다. 그러나 이것은 Mozilla 확장입니다. 당신이 정말로 개인을 의미하는 경우

5

, 당신은 ... 이런 식으로 뭔가를 시도 할 수

var fooView; 
(function(){ 
    var _privateFunc = function() { 
     ... 
    } 

    fooView = Backbone.View.extend({ 
     initialize: function() { 
     _privateFunc.call(this); 
     } 
    }); 
})();