【发布时间】:2013-09-16 22:54:49
【问题描述】:
为了了解如何在 Javascript 中完成继承,我偶然发现了许多不同的实现,包括 Crockfords、Resigs、Prototype、klass 等。
我错过了(我为骚动做好准备)是 Smalltalkish 自我/超级对:self 扮演与 this 类似的角色,即代表当前“对象”,super 指的是超类-this 的唯一版本。
[Skip to "]" 如果你知道 super 在 Smalltalk 中的作用:假设 Subclass 已经覆盖了在 Superclass 中定义的 method1,我仍然可以在 Subclass.method2() 中使用 super.method1() 访问超类实现.这不会执行Subclass.method1() 代码。
function Superclass () {
}
Superclass.prototype.method1 = function () {
return "super";
}
function Subclass () {
}
Subclass.prototype.method1 = function () {
return "sub";
}
Subclass.prototype.method2 = function () {
alert (super.method1 ());
}
var o = new Subclass;
o.method2 (); // prints "super"
]
那里有任何“Javatalk”包吗?到目前为止,我只看到了 Javascript 中的 OO 仿真,它可以访问当前定义的方法 (method2) 的超类实现,而不是任何其他 (例如 method1)。
谢谢,诺比
【问题讨论】:
标签: javascript inheritance smalltalk super