backbone.js について十分な知識があると信じていましたが、理解できない問題があります。
次の 2 つのビューがあるとします。
BaseView = Backbone.View.extend({
foo: {},
initialize: function(options) {
this.render();
},
render: function() {
// ...
}
});
PageView = BaseView.extend({
render: function() {
this.foo.bar = 23;
}
});
両方のビューで属性 'foo' をチェックすると、明らかに空のオブジェクトになります。
> BaseView.prototype.foo
Object {}
> PageView.prototype.foo
Object {}
しかし、PageView インスタンスを作成すると、BaseView の「foo」属性が変更されます。そんなことがあるものか?
> page = new PageView()
> page.foo
Object {foo: 23}
> BaseView.prototype.foo
Object {foo: 23}
[編集]
実際、これは一般的な OOP の質問です。パイソンでは:
class A(object):
foo = {}
class B(A):
def __init__(self):
self.foo['bar'] = 23
>>> print A.foo
{}
>>> b = B()
>>> print A.foo
{'bar': 23}