Javascript:使用哪个函数结构

时间:2010-10-12 18:02:12

标签: javascript scripting

我正在阅读一篇关于Javascript最佳实践的文章,并且对使用哪种功能结构感到困惑......

我想它可能会对变量和函数的范围产生影响,但是你会使用哪种结构(这被认为是最佳实践)?

结构1:使用对象文字。

var obj1 = {
    _myvar : 'myval',

 init: function() {
  this.function1();
  this.function2();
 },

 function1: function() {
  alert('function1');
 },

 function2: function() {
  alert('function2');
 }
};
obj1.init();



结构2:将代码包装在自动执行功能中。

(function(){
 var _myvar = 'myval',

 function1 = function() {
  alert('function1');
 },

 function2 = function() {
  alert('function2');
 },

 init = (function() {
  function1();
  function2();
 }) (); 
}) ();

3 个答案:

答案 0 :(得分:3)

当您不希望其他人干扰您的代码和/或不想使用任何全局变量时,您可以使用自执行匿名函数。如果您可能想要使用这些函数/对象/其他任何地方,您可能希望使用第一个。

答案 1 :(得分:1)

当您需要从代码的其他部分访问对象中的方法和变量时,“结构1”是合适的。当您编写要在其他地方重复使用的库代码时,该格式应始终是您的首选。

当您不想与应用程序的其他部分共享代码时,

“结构2”是合适的,因此您希望保护变量和函数免受来自其他地方的干扰。

答案 2 :(得分:0)

我发现Christian Heilmann的Revealing Module Pattern非常有用。 (向下滚动到他页面上的最后一个“绿屏”代码示例。)

使用is pattern,您可以在匿名执行的函数中私下创建所有方法/函数,然后通过返回的对象选择公共接口。