Отделения и организацию модулей с объектами?


Как я создаю 3D крестики-нолики, я имея несколько модулей внутри моего приложения на JavaScript. Например, есть 3D-модуля, который обрабатывает перспективных расчетов, в то время как многопользовательский модуль управляет все с точки зрения онлайн игры.

Это хорошая практика, чтобы поместить функции каждого модуля в отдельный объект?

В настоящее время у меня есть:

multiplayer.js:

var Multiplayer = {
    socket: new Socket("ws://192.168.0.100:123/test"), // Relevant variables concerning multiplayer stuff

    createSession:
    function() {
       //...
    }
}

renderer.js:

var Renderer = {
    f: 200, // Relevant variables concerning 3D rendering stuff
    g: 200;

    render:
    function() {
        //...
    }
}

и так далее.

Это хорошая практика проведения моего проекта? Или есть более эффективный способ?



269
10
задан 24 февраля 2011 в 06:02 Источник Поделиться
Комментарии
2 ответа

Я бы порекомендовал вам использовать закрытие как этот:

var Obj = (function() {
var privateState = null;
return {
A: 1,
B: true,
C: function() {
return privateState;
}
};
})();

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

7
ответ дан 24 февраля 2011 в 06:02 Источник Поделиться

Я выбрал для блокад: http://jsfiddle.net/raXQT/4/.

Теперь можно безопасно и легко использовать переменные. Также мне нравится тот факт, что Chrome поддерживает JavaScript геттеры и сеттеры вроде этого (это будет хром-все равно).

var t=(function() {
var a = 0;
return {
get val() {
return a;
},
set val(v) {
a = v;
},
alertA: function() {
window.alert("alertA() shows a: " + a);
}
}
})();

alert("t.val: " + t.val);
t.val = 2;
alert("t.val = 2\n\nt.val: " + t.val);
t.alertA();
t.a = 6;
alert("t.a = 6\n\nt.val: " + t.val);

1
ответ дан 1 марта 2011 в 10:03 Источник Поделиться