Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Объединение функции (https://javascript.ru/forum/dom-window/82390-obedinenie-funkcii.html)

Янковиц 28.04.2021 20:29

Объединение функции
 
В библиотеке есть функция indent, которая потом добавляется в объект. Упрощённо выглядит так:
function indent( element, isOutdent ) {
	return 'some code';
}
indent.disabled = function( option, styles ) {
	return styles.lists.length === 0;
};

А потом добавляется в объект:
var commands = Object.freeze( {
	indent: indent,
} )

И, как я понимаю, потом можно обращаться к функциям commands.indent и commands.indent.disabled

Возможно ли в JS indent.disabled = function( option, styles ) сразу определить внутри function indent( element, isOutdent )? Думается, здесь просто вопрос понимания синтаксиса...

voraa 28.04.2021 22:26

Цитата:

Сообщение от Янковиц
Возможно ли в JS indent.disabled = function( option, styles ) сразу определить внутри function indent( element, isOutdent )

Сразу определить невозможно.
В JS все операторы выполняемые
Даже
var x;
это выполняемый оператор. Результатом его выполнения является заведение переменной х

Можно написать так

function indent(  ) {
	indent.disabled = function(  ) {
		alert ('indent.disabled')
	};
    return 'some code';
}

var commands = Object.freeze( {
    indent: indent,
} )

commands.indent()
commands.indent.disabled()


indent.disabled = function( ) {...
выполнится только когда будет вызвана функция indent
И каждый раз при вызове indent в indent.disabled будет записываться новая функция (хоть и точно такая же, как прошлый раз, но все равно новая, и браузеру каждый раз придется компилировать ее заново)

Оно надо?

Янковиц 29.04.2021 09:06

Спасибо за развёрнутый ответ


Часовой пояс GMT +3, время: 22:05.