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」は「class」メソッドを持つオブジェクトです)
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 がある場所で、いくつかのことを試しましたが、何も機能しませんでした。上書きされたスーパークラスのメソッドを呼び出す必要があります。
ご協力ありがとうございました