我正在为我当前的项目使用 John Resig 的继承实现,我想知道是否有办法让子类也继承(访问)父类的闭包变量......
例如,我写了下面的类
var Foo = (function() {
var p = "im p";
var Foo = Class.extend({
getp : function() {
return p;
}
});
return Foo;
})();
现在 Foo 类可以访问闭包中的变量 p 。Foo 的子类也是如此……
var Bar = Foo.extend({});
var bar = new Bar;
bar.getp(); // "im p"
这并不奇怪,因为 bar.getp 只是调用 Foo.getp,后者可以访问 p。但是,如果我覆盖 bar.getp
var Bar = Foo.extend({
getp : function() {
return p;
}
});
现在当我执行 bar.getp() 时,它会抛出 p 未定义,因为 bar 无法访问它
我有几种方法可以让 bar 可以访问 p,但我认为它们有点尴尬,你认为最干净的方法是实现这一点。