2012-09-05 43 views
0
A = { 
    f1: function() { 
     return { 
      a: function(){ alert('sss'); } 
     } 
    } 
} 

A.f1().a(); 

为什么使用这种方法?从javascript中的对象方法返回对象

为什么方法a()绑定到A.f1()?

+3

我真的不明白的问题是什么?是不是工作的事情你期望的方式吗? –

+0

我曾经认为'A.f1()。a()'不应该工作,因为方法a()不属于f1()。 – HACK21

+1

'a'不属于函数'f1',它属于*调用'f1'返回的值。 –

回答

0

当你做如下:

var x = A.f1(); 

你得到的到x是由F1函数返回的对象。它是:

{ 
    a: function(){ alert('sss'); } 
} 

现在对象'x'上有函数a()。您可以调用该函数为:

x.a(); 

这是exatly类似于:

A.f1().a(); 
1

成员函数f1A返回对象文字,其成员a设置为函数。它也可以写成:

A = { 
    f1: { 
     a: function() { alert('sss'); } 
    } 
} 

A.f1.a(); 

返回一个对象可能在这种情况下是个人喜好。这两个例子之间没有功能上的区别。

+0

他是一种工厂方法,而你的是Singleton类型? – timidboy