Функция для связывания метода объекта
Чтобы создать функцию, которая связывает метод объекта с его контекстом и необязательно добавляет дополнительные параметры в начало, следуйте этим шагам:
- Откройте Терминал/SSH и введите
node, чтобы начать практиковаться в написании кода.
- Определите функцию, которая принимает три параметра: контекст объекта, ключ метода и любые дополнительные аргументы, которые будут добавлены в начало.
- Функция должна возвращать новую функцию, которая использует
Function.prototype.apply() для связывания метода с контекстом объекта.
- Используйте оператор расширения (
...), чтобы добавить любые дополнительно переданные параметры в аргументы.
- Вот пример реализации:
const bindKey =
(context, fn, ...boundArgs) =>
(...args) =>
context[fn].apply(context, [...boundArgs, ...args]);
- Чтобы протестировать функцию, создайте объект с методом и свяжите его с помощью
bindKey(). Затем вызовите связанный метод с некоторыми аргументами.
const freddy = {
user: "fred",
greet: function (greeting, punctuation) {
return greeting + " " + this.user + punctuation;
}
};
const freddyBound = bindKey(freddy, "greet");
console.log(freddyBound("hi", "!")); // 'hi fred!'