JS Объявление функции "Псевдоним" - PullRequest
0 голосов
/ 16 апреля 2020

Я хотел бы вызвать функцию JS с параметром "params" в форме объекта со значениями / функциями по умолчанию, реализованными как объект-прототип. Таким образом, вызывающая сторона может переопределить значения / функции по умолчанию, но все равно сделать «супер» вызов (без всех prototype.name.call (this .. uglyness).

Рассмотрим следующий код, который работает как и ожидалось:

const _defaultParams = {
    val: 42,
    _hello: function (msg) {
        console.log('The message is: ' + msg);
    }   
};
_defaultParams.hello = _defaultParams._hello;

const proto = { 
    doit: function (params, callback) {
        params = Object.assign(Object.create(_defaultParams), params);
        params.hello('Hello, World!');
        return callback();
    }   
}

const obj = Object.create(proto);

obj.doit({
    hello: function (msg) { // kustom hello fn
        msg = msg.toUpperCase();
        return this._hello(msg);
    }   
}, (err) => {
    console.log('done');
});

Вывод:

$ node aliasfn.js
The message is: HELLO, WORLD!
done

Вопрос в том, есть ли более чистый / ясный способ сделать это. В частности, есть ли способ объявить значение по умолчанию "привет "Функция в _defaultParams вместо внешнего. Мне не интересно использовать классы и новые и расширяет и т. д. Это избыточно для этого (и большинство всего остального IMO). Но у меня будет много" params ", так что было бы замечательно, если бы был более умный способ упростить это.

Кроме того, приветствуются и приветствуются общие рекомендации / пламя по технике. Я все еще пытаюсь улучшить свой стиль кодирования JavaScript.

...