Javascript 试图理解主干继承和专门化
我有一个基本视图V: 由VV扩展,它设置属性q:234: V进一步专用于VV: 问题是基类型无法访问q,我如何才能做到这一点? 在这个例子中,我试图理解这个继承系统 q和z类似于要在中定义的虚拟/抽象值 子类 当你这么说的时候:Javascript 试图理解主干继承和专门化,javascript,backbone.js,Javascript,Backbone.js,我有一个基本视图V: 由VV扩展,它设置属性q:234: V进一步专用于VV: 问题是基类型无法访问q,我如何才能做到这一点? 在这个例子中,我试图理解这个继承系统 q和z类似于要在中定义的虚拟/抽象值 子类 当你这么说的时候: VV = V.extend({q: 234}); 您正在将VV创建为V的子类,该子类将具有额外的q属性。该类定义的属性与从中处理的自动选项无关 如果说创建视图的新实例,文档可能会更好 然后,当您新建VV{z:123}时,该{z:123}在其单个选项参数pre-1.
VV = V.extend({q: 234});
您正在将VV创建为V的子类,该子类将具有额外的q属性。该类定义的属性与从中处理的自动选项无关
如果说创建视图的新实例,文档可能会更好
然后,当您新建VV{z:123}时,该{z:123}在其单个选项参数pre-1.1.0 Backbones中被传递给视图的initialize方法,它会自动设置此选项。对于构造函数的选项,q将位于此.q中,因此您的初始化应该更像这样:
initialize: function(options) {
console.log(options.z);
console.log(this.q);
}
此外,如果您这样做:
var VVV = VV.extend({q: 'pancakes'});
您将替换VV实例得到的默认q,而这个.q将是初始化中的“煎饼”
演示:
使用类似于子类化,或者更准确地说,它创建了一个新的原型实例,而new创建了新对象或原型实例的副本。当然,类/实例语言并不适合JavaScript的实际情况,因此我们必须小心,不要把术语看得太重
VV = V.extend({q: 234});
initialize: function(options) {
console.log(options.z);
console.log(this.q);
}
var VVV = VV.extend({q: 'pancakes'});