同时使用对象属性作为函数和对象
问题描述:
我想知道是否有办法将对象属性声明为函数,同时也作为对象声明。同时使用对象属性作为函数和对象
我有一个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')
更具可读性。
好神,我感到愚蠢。谢谢! – 2013-03-07 19:25:01
如何使'app.get.client(123)'以及'app.get.client(123).offers(456)'成为可能? – 2013-03-07 20:55:55
@RémiBreton:'app.get.client'只是返回一个带'offering'方法的对象。 – Ryan 2013-03-08 00:28:56