Страницы

Поиск по вопросам

понедельник, 25 марта 2019 г.

Анонимные функции в js - c ними или без них?

До сегодняшнего дня я считал, что 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", в глобальной области видимости, а во втором нет. Отсюда возникает идеологический вопрос в необходимости|отсутствии сокрытии данных (инкапсуляции).

Комментариев нет:

Отправить комментарий