JavaScript:使用哪种函数结构?

5

我正在阅读一篇关于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();
 }) (); 
}) ();

相关:https://dev59.com/NE7Sa4cB1Zd3GeqP8fwP - JulianR
3个回答

3

当您不希望其他人干扰您的代码并且/或者不想使用任何全局变量时,您可以使用自执行匿名函数。如果您可能想在其他地方使用那些函数/对象/任何东西,则应该使用第一个。


1

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

当您不想与应用程序的其他部分共享代码,并且希望保护变量和函数免受其他地方的干扰时,“结构2”是合适的。


0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接