¿Es posible tener propiedades privadas en un modelo? Al igual que las variables declaradas localmente en una función (constructor), no se adjunta a this
, pero se declara localmente y visible solo por lo que se define en la función (constructor). Ejemplo sin BB Vista:Propiedades privadas en modelos o vistas de 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
...
}
Tenga en cuenta que internalInput
no es accesible al mundo exterior y también aModel
no es accesible (a través de al menos MyView). Entonces, si quiero usar Backbone.View para implementar el MyView anterior, ¿cómo lo haría y mantendría $ internalInput 'private'?
Tenga en cuenta que lo único que logra "privado" es hacer que su código sea más lento. – Raynos
¿Puedes elaborarlo por favor? Solo lo quiero con fines de ocultación de información para que pueda cambiarlo en el futuro, sin temor a que alguien pueda depender de él al haberlo usado directamente. Pero si esto significa ralentizar el código, entonces es un problema. ¿Dónde puedo encontrar más información sobre su reclamo? – Paralife
[Los cierres tienen una sobrecarga masiva] (http://stackoverflow.com/a/8729939/419970), [El estado privado es caro pero se puede hacer mejor] (http://raynos.org/blog/23/Prototypes-and -privado-estado). Mi recomendación personal es usar '_foo' para _internal_ propiedades que probablemente cambien. Además, si alguien depende de las propiedades _internal_, es _su_ problema cuando cambia su API, no su problema – Raynos