为了在 JavaScript 中模拟经典的类 Java 类,我有一个名为“createClass”的函数:
它有 3 个参数:
* 应该创建的构造函数的名称和路径。
* 超类的路径。
* 带有类方法的 JavaScript 对象。
例如:
myApp.createClass("myapp.core.JString", "myapp.core.BaseString", {
abc: function () {
...
首先我创建一个构造函数
Cf = function () {
...
如果有超类(“Base”是超类的构造函数):
protoObj = new Base();
protoObj.constructor = Cf;
现在,新类的方法一个方法,我把它们放到protoObj上:(
“protos”是具有“类”方法的对象)
for (name in protos) {
????????????????????
protoObj[name] = protos[name]
但在将方法放入 protoObj 之前,我想创建方便的方法来从覆盖的方法中调用超类方法:
init: function () {
this.jstring_super_init();
...
因此,在问号所在的位置,我想放置以下代码:(在这种情况下,classnameLast 是“jstring”=> 类路径的最后一部分 => 小写)
if ((typeof protos[name] === "function") &&
(protoObj[name]) &&
(typeof protoObj[name] === "function")) {
supername = classnameLast + "_super_" + name;
protoObj[supername] = XXXXXXXXXXXXX
在多个 X 所在的地方,我尝试了几件事,但没有任何效果。它应该调用被覆盖的超类的方法。
非常感谢您的帮助