2010-10-12 3 views
5

я читал статью о передовой практике JavaScript, и своего рода запутался, о котором функция структуры использовать ...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(); 
})(); 
})(); 
+0

Родственные: http://stackoverflow.com/questions/3220870/javascript-should-i-be-hiding-my-implementations – JulianR

ответ

3

Вы используете прямоприменяемых анонимную функцию, если вы не хотите, чтобы другие помехи кода и/или не хотите использовать глобальную переменную. Если вы захотите использовать эти функции/объекты/где-то еще, вы бы хотели использовать первый.

1

«Структура 1» подходит, когда вам нужен доступ к методам и переменным в объекте из других частей вашего кода. Этот формат всегда должен быть вашим предпочтением, когда вы пишете библиотечный код, предназначенный для повторного использования в другом месте.

«Структура 2» подходит, если вы не хотите делиться своим кодом с другими частями приложения, и поэтому вы хотите защитить переменные и функции от любых помех от других источников.

0

Я нашел Christian Heilmann's Revealing Module Pattern, что очень полезно. (Прокрутите вниз до последнего образца кода «зеленого экрана» на своей странице.)

С шаблоном с помощью шаблона вы можете самостоятельно создавать все свои методы/функции в анонимно выполненной функции, а затем выбирать свой публичный интерфейс через возвращаемый объект ,

Смежные вопросы