До сегодняшнего дня я считал, что js код нужно устраивать так -
file.js
var a = 10; // какое-то свойство
/**
* Class - то, что я называю классом,
* объект которого я буду создавать и
* работать с его методами и свойствами.
*/
var Class = function(){
};
Но сегодня я увидел вариант с анонимной функцией -
file.js
(function(){
var a = 10;
var Class = function(){
};
})
И сразу я вспомнил, что такое исполнение уже видел, и у меня появился вопрос: а как более правильно? И в чем отличия, если они есть?
Ответ
Важно отметить, что в JavaScript`е (ECMA) не существует так называемых классов, и всякая сущность представляет собой объект. Существует 3 способа создания объектов: Используя функцию в качестве инстанции: function someFunction (prop) { this.prop = prop; ... } var object = new someFunction ('property'); Используя литеральный способ: var object = { prop: "property", } Используя анонимные функции (лямбда) var object = new function() { this.type = "property"; } Наиболее часто используется именно первый способ. Так же стоит учитывать, что в первом случае: var a = 10; // какое-то свойство var Class = function(){}; У Вас переменная "a", в глобальной области видимости, а во втором нет. Отсюда возникает идеологический вопрос в необходимости|отсутствии сокрытии данных (инкапсуляции).
Комментариев нет:
Отправить комментарий