從Java背景來看,我期望類的實例的基類中的屬性與使用相同基類的其他類實例是唯一的。使用JavaScript原型繼承的意外共享數據
在JavaScript中,存儲在「基類」中的任何屬性似乎都在該「基類」的各種實例之間共享。舉例來說,在這裏看到:
正如你所看到的,BaseView.settings
通過兩個ViewOne
和ViewTwo
訪問。在一個實例中更改BaseView.settings
中的值會影響另一個實例中的值。
如果我將settings: {}
從BaseView
中撥出並轉換爲ViewOne
和ViewTwo
,則所有操作都按我期望的方式進行。
不過,我不想弄亂ViewOne
和ViewTwo
有額外的屬性。所以,我可以動態裏面BaseView.setProp()
創建this.settings
:
是否有更好的方法來解決這個問題,或者這是一個很好的解決方案?
請注意,我在本例中使用Backbone.JS視圖,但我期望任何JavaScript原型繼承解決方案的結果都是相似的。你可以看到,骨幹網使用創造原型的繼承相當典型方法:
https://github.com/documentcloud/backbone/blob/0.3.3/backbone.js#L870
https://github.com/documentcloud/backbone/blob/0.3.3/backbone.js#L955
參見http:/ /stackoverflow.com/q/6362214/783219 – Prusse
@Prusse,謝謝,看起來相關並且有幫助 – Tauren