Нормальный ли это подход к организации JS код?
Этот подход "псевдоооп", хотя у вас и есть какие-то объекты, вы лишаете себя целой кучи полезных вещей - наследования, полиморфизма, не очень оптимально работаете с памятью.
В JS ооп принято варить через прототипы. Например, вот так:(function (my) {
my.Form = function () {
  $(document).on('submit', 'form', function (evt) {
    // это же просто пример, так?
  });
};
my.Form.prototype.submit = function () {
  // ...
};
})(MY);
В дальнейшем, если вам понадобится не просто форма, а, например, валидируемая форма, или даже AJAX-форма, вы сможете без проблем отнаследоваться от этой формы и добавить ништяков. Например.(function (my) {
my.ValidatedForm = function () {
  // something
};
my.ValidatedForm.prototype = new my.Form();
my.ValidatedForm.prototype.isValid = function () {
  // ...
};
})(MY);
Также у вас появится доступ к состоянию инстанса через ключевое слово this: для этого потребуется создавать экземпляры через оператор new. Будет выглядеть как-то так:var myForm = new MY.Form();
myForm.submit();
Это не всегда нужно делать именно так, но все зависит только от того, чего вы в конечном счете пытаетесь достичь. Я очень советую почитать статьи Ильи Кантора, автора сайта javascript.ru про ООП в JS. Он прилично пишет и хорошо разбирается в предметной области.
Имена переменных пишут с маленькой буквы:var myVar = 5;
С большой буквы принято писать имена классов и функций-конструкторов:class Animal {
  name = '';
  constructor(_name){
    this.name = _name;
  }
}
var doggy = new Animal('Rex');
Все прописные буквы означает константу:const PI = 3.14;