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

时间:2013-03-07 18:51:33

标签: 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', 'password') // Send credentials to log as username/password
app.login.as('John') // Login using credentials stored in a server-side constant

我怀疑这甚至是可能的,因为我从来没有喜欢它,但我想不出更清晰和人类可读的方法来布局方法。当然会很好!

1 个答案:

答案 0 :(得分:2)

一个函数也是一个对象!

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')

更具可读性。