Javascript 如何通过函数向类提供选项列表?

Javascript 如何通过函数向类提供选项列表?,javascript,Javascript,我正在用javascript尝试使用extend.js创建类。我在课堂上遇到了一些问题,不确定我是否需要它们,但我认为这一个会很有用。它是一个只获取一些数据库表数据的类 var TableData = Class.extend(function(){ this.rowId; this.action; this.returnWhat; this.tableType; this.php; this.query = function(){ if (t

我正在用javascript尝试使用extend.js创建类。我在课堂上遇到了一些问题,不确定我是否需要它们,但我认为这一个会很有用。它是一个只获取一些数据库表数据的类

var TableData = Class.extend(function(){
   this.rowId;
   this.action;
   this.returnWhat;
   this.tableType;
   this.php;

   this.query = function(){ 
      if (this.returnWhat) this.action += '_' + this.returnWhat;
      var postData = { func : this.action };
      if (this.rowId) $.extend(postData, { rowId : this.rowId });
      $.post(this.php, postData, function(data){
        if(data){this.data = data;}
      });   
    return this.data;   
   };

});
我只知道一些表,所以我只是将它们存储为变量/选项,但我不知道如何正确设置类变量。例如,这个例子不起作用,但可能说明我正在尝试做什么

var options = {
    rowId : '*',
    action : 'get',
    returnWhat : 'all'
}

var league = function (options){
    this.tableType    = 'league';
    this.rowId        = options.rowId;
    this.action       = options.action;
    this.returnWhat   = options.returnWhat;
    this.php          = 'php/' + options.tableType + '.php';
}

var tableData = new TableData(assoc_league);

我一直喜欢这个主意

(function(my, $){
    var cfg = {
        rowId: null,
        action: null,
        returnWhat: null,
        tableType: null,
        url: null
    };

    my.init = function(options) {
        if (options != undefined) {
            for (var k in options) {
                if (!options.hasOwnProperty(k)) continue;
                cfg[k] = options[k];
            }
        }
        return this;
    };

    my.fetchData = function(data, callback) {
        $.post(cfg.url, data, function(resp) {
            callback(resp);
        });
    }
})(window.myapp, window.jQuery);

//---------------
myapp.init({
    url: '/blah/blah'
})
.fetchData({animal1: 'monkey', animal2: 'zebra'}, function(data){

});

嗯,这是一个疯狂的方式来实现一些简单的事情。另外,在var league中,您可能最好将this.php设置为使用this.tableType,否则在您的示例中,它将是未定义的。我不知道是因为我使用类的想法错误,还是因为我不应该使用类。还有$。post是异步的,所以返回这个。data不会返回任何东西。我不确定它是返回这个还是返回$。。。测试和查看:)我刚刚意识到我的代码中有一个底线。。我现在会改正的。不能将jquery和myapp作为$:)我不记得为什么我选择这个作为答案-我得到的答案是未定义的,只是括号应该是}(window.myapp,window.jquery));您好,测试人员23223,您在哪个浏览器中测试它?