【发布时间】:2012-03-06 21:04:02
【问题描述】:
我正在研究从父对象继承到子对象的方法对变量的可访问性。
通过将父实例关联到子构造函数的原型来执行继承:
Function.prototype.extend = function(child) {
var prototype = new this;
child.prototype = prototype;
return child;
};
所以我定义了一个父类:
var Parent = function() {
var self = this;
this.init = function() {
self.name = 'Abram';
};
this.getName = function() {
alert('self.name = ' + self.name);
};
this.init();
};
还有一个子类:
var Baby = Parent.extend(function(name) {
var self = this;
this.init = function() {
self.name = name;
};
this.init();
});
// instantiate a child object:
var baby = new Baby('Jimmy');
// call the inherited method:
baby.getName(); // undefined!
方法getName被正确继承,但它无权访问self.name成员。
怎么可能,在子类实例的范围内可用呢?
用alert(baby.getName)检查方法的主体我得到:
function () {
alert("self.name = " + self.name);
}
这正是我所期望的。
但是为什么它不能在本地解析self 变量呢?
【问题讨论】:
标签: javascript oop inheritance scope