Czy możliwe jest posiadanie prywatnych właściwości w modelu? Podobnie jak lokalnie zadeklarowane zmienne w funkcji (konstruktor), niepowiązane z this
, ale deklarowane lokalnie i widoczne tylko przez to, co jest zdefiniowane w funkcji (konstruktor). Przykład bez BB Widok:Własności podobne do prywatnych w modelach lub widokach Backbone.js
function MyView(aModel){
var $internalInput = $('<input>');
this.render: function($where){
$internalInput.val(aModel.get('SomeProperty'));
$where.append($('<div class="inputWraper">').append($internalInput));
};
this.toggleReadonly: function() {
toggle $internalInputs readonly attribute
}
...
+ Code to bind input.val to some aModel property(ies) and setup events
...
}
Zauważ, że internalInput
nie jest przystosowany do świata zewnętrznego i aModel
również nie jest dostępny (poprzez MyView przynajmniej). Więc jeśli chcę użyć Backbone.View do implementacji powyższego MyView, w jaki sposób mogę to zrobić i zachować $ internalInput 'private'?
Uwaga: jedyną rzeczą, którą "prywatnie" osiąga, jest spowolnienie kodu. – Raynos
Czy możesz opracować proszę? Po prostu chcę tego dla celów ukrywania informacji, więc mogę to zmienić w przyszłości, bez obawy, że ktoś może na tym polegać, wykorzystując go bezpośrednio. Ale jeśli oznacza to spowolnienie kodu, to jest to problem. Gdzie mogę znaleźć więcej informacji na temat Twojego roszczenia? – Paralife
[Zamknięcia mają ogromne obciążenie] (http://stackoverflow.com/a/8729939/419970), [Stan prywatny jest drogi, ale można go zrobić lepiej] (http://raynos.org/blog/23/Prototypes-and -prywatny stan). Moim osobistym zaleceniem jest użycie '_foo' dla _wewnętrznych_ właściwości, które prawdopodobnie ulegną zmianie. Również, jeśli ktoś zależy od właściwości _internal_, to jest to problem, kiedy zmienia się API, a nie twój problem. – Raynos