2015-02-23 64 views
-1

我不确定我是否理解以下代码片段(从here粘贴)。显然,作者创建了一个函数,然后为其分配属性。定义一个函数然后给它添加属性?

returnClient = function() { 
    var client; 
    client = function(href, options) { console.log('client called'); } 
    client.parse = function(source, config) { console.log('client.parse called'); } 
    return client; 
} 

//later 
var client = returnClient(); 
//usage 1 
client('localhost:9999/users'); 
//usage 2 
client.parse({collection:{}}); 

这有什么用?这是一个很好的做法吗?他们为什么不返回一个对象?

+1

您发布的代码不正确。在你的代码中,'returnClient'有一个名为'client'的局部变量,它是一个返回'undefined'的函数。 'returnClient'然后返回'client()',这意味着它返回'undefined'。因此,在你的'// later'部分,你试图使用'undefined'作为一个函数,然后作为一个对象。 (请注意,你链接的源代码不会*有*这个问题,你在这里发布时引入了这个问题。) – ruakh 2015-02-23 16:31:41

+0

即使定义'doSomething'和'doSomethingElse'([fiddle](http:// jsfiddle.net/5njfqkz0/)) – Jamiec 2015-02-23 16:31:53

+0

sry。修正错误 – Midiparse 2015-02-23 16:34:25

回答

0

这有什么用?

您已经在该用法示例中演示了自己。

这是一个很好的做法吗?

是的,它经常使用。尽管构造函数更常见,其中属性就像静态类属性。

他们为什么不返回一个对象?

他们这样做,但他们想要一个可调用对象。

相关问题