0

私が使用しているレガシーのmootoolsクラスには、多くの機能があります。クラスを拡張する代わりに、クラスの外部からクラスメソッドの1つを呼び出すだけです。したがって、クラスが次のようになっている場合:

var myClass = new Class({
    search: function(){
        this.searchSpinner.show();
        this.request.send({data: this.data});
    },

    // many other functions
})

search同じページにロードされている別のスクリプトからメソッドを呼び出す必要があります。

今私はこのようにしようとしています:

window.myClass.search();

しかし、これは私が理解できない大きな毛深いエラーをもたらしますが、それは次のように見えます:

Uncaught TypeError: Object function (){e(this);if(g.$prototyping){return this;}this.$caller=null;var i=(this.initialize)?this.initialize.apply(this,arguments):this;this.$caller=this.caller=null;
return i;} has no method 'search' 

このメソッドを呼び出す「正しい」方法はありますか?

4

2 に答える 2

3

Mootoolを使用して定義されClassたクラスは、他の言語の静的クラスのようには動作しません。そのクラスのメソッドにアクセスするには、最初にそのクラスのインスタンスを作成する必要があります。

var classObj = new myClass(/*any parameters if required, check the "initialize" method*/);
classObj.search();
于 2013-03-20T22:09:49.593 に答える
1

「シングルトン」パターンを適用しようとしています。このクラスのオカレンスを1つだけ使用する場合は、次を使用できます。

var mySingleton = new new Class({

(2 xnewキーワードに注意してください)次に

mySingleton.search()

それを呼ぶために...

ああ、静的関数をmootoolsクラスに追加しようとしている場合は、次のように宣言してください。

var myClass = new Class({ });
myClass.staticMethod = function() {
    // ...
};

お役に立てれば !

于 2013-03-20T23:03:16.517 に答える