2011-12-01 46 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不暴露給外界。我很新的封裝在JavaScript中,所以原諒我,如果有明顯的答案。 :D

回答

3

您正在尋找的內容更準確地稱爲protected,而不是專用輔助功能。沒有辦法直接在JavaScript中實現。

您最好的選擇可能只是揭露_privateFunc和使用,用下劃線方法僅用於由子類使用的慣例。

你也可以實現在父__noSuchMethod__,然後檢查,該方法是由一個子類,稱爲和執行受保護的方法。但是,這是一個Mozilla擴展。

5

如果你說的是真的私人,您可以嘗試這樣的事情...

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

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