0

我有一个正在使用的遗留 mootools 类,它有很多功能。我没有扩展类,而是尝试从类外部简单地调用类方法之一。因此,如果课程看起来像这样:

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

您正在尝试应用“单例”模式:如果您只使用此类的一次,您可以使用:

var mySingleton = new new Class({

(注意 2 xnew关键字)然后

mySingleton.search()

叫它...

哦,如果您尝试将静态函数添加到 mootools 类,只需像这样声明它们:

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

希望这可以帮助 !

于 2013-03-20T23:03:16.517 回答