是否可以在模型中擁有私有屬性?像(構造函數)函數中的局部聲明變量一樣,不附加到this
,但是在本地聲明並且只能由(構造函數)函數中定義的任何東西可見。 例無BB查看: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
...
}
注意internalInput
不是外界aModel
訪問也是不可訪問(通過MyView的至少)。 所以,如果我想使用Backbone.View來實現上述MyView,我將如何做,並保持$ internalInput'私人'?
注意「私有」實現的唯一一件事就是讓代碼變得更慢。 – Raynos
請你詳細說明一下嗎?我只是希望它用於信息隱藏的目的,所以我可以在將來改變它,而不用擔心有人可能直接使用它而依賴它。但如果這意味着減慢代碼,那麼這是一個問題。我在哪裏可以找到有關您的索賠的更多信息? – Paralife
[閉包有大量開銷](http://stackoverflow.com/a/8729939/419970),[私人狀態很貴但可以做得更好](http://raynos.org/blog/23/Prototypes-and - 私人狀態)。我個人的建議是對'_foo'使用可能會改變的_internal_屬性。另外,如果有人依賴於_internal_屬性,當你的API發生變化時,它就是_their_問題,而不是你的問題 – Raynos