-1

我有一组管理数据库上的 CRUD 操作的函数。

我正在尝试拥有一个包含添加、更新、删除等功能的顶级功能,以保持其干净和有条理。

我经常看到 Javascript SDK 看起来像users.add(param, param)我预想的那样:

users = function(){
     add = function(param,param) {
        // do function
     }
}

这样做的正确方法是什么?

4

5 回答 5

1

一种简单的方法是将其构造为对象:

var users = {
    add: function(param, param) {
        //do function
    },

    edit: function(param, param) {
        //do another function
    }
    //etc
};
于 2013-06-02T19:50:08.747 回答
1

users通常是一个对象字面量,像这样:

users = {
    add:function(...) {...}
}

或者,它可能是一个实例化的对象(在这种特殊情况下不太可能):

function Users() {};
Users.prototype.add = function(...) {...};

users = new Users();
users.add(...);
于 2013-06-02T19:50:59.780 回答
1

你可以这样做:

var Users = {
  add: function(a,b) {...},
  remove: function(a) {...},
};

然后调用:

Users.add(a, b);

或者:

var Users = function(options) { this.init(options); };

// Add a static method
Users.add = function(a,b) {...};
// Also add a prototype method
Users.prototype.remove = function(a) {...};

然后这样做:

var user = User.add(a, b);

或者

var user = new User(user_id);
user.remove();    
于 2013-06-02T19:53:01.870 回答
0
var users = {
    add: function(params) {
        // do stuff
    },
    // more functions
};
于 2013-06-02T19:50:01.983 回答
0

也许这可能会有所帮助:

var User = function(name){
    this.name = name;
    this.address = "";
    this.setAddress = function(address){
        this.address = address;   
    }
    this.toString = function(){
        alert("Name: "+this.name+" | Address: "+this.address);   
    }
}
var a = new User("John");
a.setAddress("street abc");
a.toString();

并管理用户列表:

var Users = function(){
    this.users = new Array();
    this.add = function(name, address){
        var usr = new User(name);
        usr.setAddress(address);
        this.users.push(usr);
    }
    this.listUsers = function(){
        for(var x = 0; x < this.users.length; x++){
            this.users[x].toString();
        }
    }
}

var list = new Users();
list.add("Mickey", "disney Street");
list.add("Tom", "street");
list.listUsers();

工作示例:http: //jsfiddle.net/N9b5c/

于 2013-06-02T19:53:36.990 回答