Javascript 将对象属性同时用作函数和对象

Javascript 将对象属性同时用作函数和对象,javascript,Javascript,我想知道是否有一种方法可以将对象属性声明为函数,同时也声明为对象 我有一个JavaScript程序,它提供了一个简单的API,可以向服务器发送AJAX请求。我的目标是使这个API尽可能简单易读 基本上,我希望能够做到这一点: var app = new App(); app.get.client(123) // Get client ID 123 app.get.client.list() // Get an array of all clients app.login('username',

我想知道是否有一种方法可以将对象属性声明为函数,同时也声明为对象

我有一个JavaScript程序,它提供了一个简单的API,可以向服务器发送AJAX请求。我的目标是使这个API尽可能简单易读

基本上,我希望能够做到这一点:

var app = new App();
app.get.client(123) // Get client ID 123
app.get.client.list() // Get an array of all clients
app.login('username', 'password') // Send credentials to log as username/password
app.login.as('John') // Login using credentials stored in a server-side constant

我甚至怀疑这是可能的,因为我从来没有这样做过,但我想不出一种更清晰、更具可读性的方法来设计方法。那太好了

函数也是一个对象

app.get.client = function(id) {
    // Get client by ID
};

app.get.client.list = function() {
    // List them
};
正如你所期待的那样


但就我个人而言,我会发现:

app.clients.byId(123)
app.clients
app.login('username', 'password')
app.loginAs('John')

可读性更强。

如何使
app.get.client(123)
以及
app.get.client(123).offers(456)
?@RémiBreton:
app.get.client
只返回一个带有
offers
方法的对象。