Ниже приведён общий пример декоратора.У меня такой вопрос: 2й аргумент в декораторе "MyFunc" это и есть обёртка которую возвращает декоратор?
function f(x) {} // любая функция
var timers = {}; // объект для таймеров
// отдекорировали
f = timingDecorator(f, "myFunc");
// запускаем
f(1);
f(2);
f(3); // функция работает как раньше, но время подсчитывается
alert( timers.myFunc ); // общее время выполнения всех вызовов f
реализация с измерителем времени:
var timers = {};
// прибавит время выполнения f к таймеру timers[timer]
function timingDecorator(f, timer) {
return function() {
var start = performance.now();
var result = f.apply(this, arguments); // (*)
if (!timers[timer]) timers[timer] = 0;
timers[timer] += performance.now() - start;
return result;
}
}
// функция может быть произвольной, например такой:
var fibonacci = function f(n) {
return (n > 2) ? f(n - 1) + f(n - 2) : 1;
}
// использование: завернём fibonacci в декоратор
fibonacci = timingDecorator(fibonacci, "fibo");
// неоднократные вызовы...
alert( fibonacci(10) ); // 55
alert( fibonacci(20) ); // 6765
// ...
// в любой момент можно получить общее количество времени на вызовы
alert( timers.fibo + 'мс' );
Декоратор возвращает новую функцию
function timingDecorator(f, timer) {
return function() {
...
Второй аргумент в декораторе - это название свойства, которое создаётся декоратором в объекте timers
и куда потом записывается общее время выполнения вызовов функций, которые прошли через декоратор с таким же вторым параметром.
...
if (!timers[timer]) timers[timer] = 0;
timers[timer] += performance.now() - start;
...
Чтобы это увидеть, в вашем же примере есть алерт
alert( timers.myFunc )
Виртуальный выделенный сервер (VDS) становится отличным выбором
Из модуля products пробую получить доступ к mutations из модуля cartЭтот вариант не срабатывает
Устанавливаю на сайт скрипт ya-share2Задал все параметры, настроил разметку openGraph
я хочу сделать приложение что оно логинелось на сайте а потом жало на кнопку, проблема в том что кнопке в html выглядит так
Помогите с решением вопроса, никак не получается реализовать обрезку текста по ширине родительского контейнера на определенной величине...