【发布时间】:2011-04-03 10:26:51
【问题描述】:
我有一个这样定义的 Javascript“类”:
var Welcomer = function(name) {
var pName = name;
var pMessage = function() {
return "Hi, " + pName + "!";
};
return {
sayHi: function() {
alert(pMessage());
}
};
};
new Welcomer('Sue').sayHi();
有没有办法“子类化”Welcomer,使我可以重新定义公共方法并访问私有方法和变量?以下将允许我访问公共方法,但不能访问私有方法:
var UnhappyWelcomer = function(name) {
var pSadMessage = function() {
// won't work, b/c I don't have access to pMessage
return pMessage() + " Miserable day, innit?";
};
return {
sayHi: function() {
alert(pSadMessage());
}
};
};
UnhappyWelcomer.prototype = Welcomer(); // failed attempt at inheritance
new UnhappyWelcomer().sayHi();
【问题讨论】:
-
您可能需要阅读this article。
-
为那篇文章添加书签。谢谢
标签: javascript inheritance closures scoping