2012-07-31 60 views
1

我在努力搞清楚什么是下面的JavaScript类函数是什么在Javascript

var FirstName = function(){ 
    var value = 0; 

    this.getValue = function(){ 
     return value; 
    } 
} 

var FirstName = function(){ 
    var value = 0; 

    return { 
     getValue: function(){ 
      return value; 
     } 
    } 
} 

我明白的两个版本之间更好的这两种风格的写作功能之间的差异后者形成一个封闭,但我不明白,从使用的角度来看,第二种方式封闭提供优于第一种优势?

编辑:根据来自菲利克斯的评论,这两个函数形成闭包。所以在语义上这两个函数没有区别(据我了解)。那么哪一个是首选方式?有没有任何指导方针?

+0

在这两种情况下,函数形成闭包。 – 2012-07-31 20:57:21

+0

第二个是甚至在做任何事情之前的压痕深度3级... – Esailija 2012-07-31 20:58:12

+0

感谢您更正菲利克斯。但是,有没有推荐的JavaScript函数编写方式? – Suhas 2012-07-31 20:58:17

回答

0

在这种情况下,第二种方式看起来有点多余。但我相信有些情况下使用第二种方式可能更有利。我个人会选择第一个,因为它通常会让代码变得更干净,代码更少。这只是一个偏好的事情。无论你喜欢什么,并与你正在编写的其他代码保持一致。一致性是最重要的事情。

0

第一种方法不返回任何东西,只是创建函数作为全局变量,而第二种方法返回内部函数作为对象的成员。

通过通过返回内部函数,您可以在整个代码中设置和维护函数的不同状态,而第一个代码在每次运行时都会覆盖该方法。看起来像后者更灵活..

你可以用这个demo弄得我做的。

+0

假设'新'在这里用来构造对象(因为函数名以UpperCase开头),尽管它在第二个中是冗余的,因为它在任何情况下都返回纯文本对象。有很多方法可以创建闭包,返回一个函数只是一个。 – Esailija 2012-07-31 21:11:36

+0

我明白了。我以我的帖子中的链接作为参考。猜猜这是不准确的(虽然它有626个投票)..我会更新。 – 2012-07-31 21:24:20

+0

是的,事实上,对这个答案的第一个评论是批评这一说法。它一定要编辑... – Esailija 2012-07-31 21:27:21