Связать метод объекта

JavaScriptJavaScriptBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы изучим концепцию связывания методов объектов в JavaScript. Мы создадим функцию, которая связывает заданный метод объекта с контекстом этого объекта, позволяя нам вызывать метод с любыми дополнительными аргументами, которые мы передадим. В конце этого практического занятия вы получите более глубокое понимание того, как манипулировать объектами и их методами в JavaScript.

Функция для связывания метода объекта

Чтобы создать функцию, которая связывает метод объекта с его контекстом и необязательно добавляет дополнительные параметры в начало, следуйте этим шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать практиковаться в написании кода.
  2. Определите функцию, которая принимает три параметра: контекст объекта, ключ метода и любые дополнительные аргументы, которые будут добавлены в начало.
  3. Функция должна возвращать новую функцию, которая использует Function.prototype.apply() для связывания метода с контекстом объекта.
  4. Используйте оператор расширения (...), чтобы добавить любые дополнительно переданные параметры в аргументы.
  5. Вот пример реализации:
const bindKey =
  (context, fn, ...boundArgs) =>
  (...args) =>
    context[fn].apply(context, [...boundArgs, ...args]);
  1. Чтобы протестировать функцию, создайте объект с методом и свяжите его с помощью 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!'

Резюме

Поздравляем! Вы завершили практическое занятие по связыванию методов объектов. Вы можете практиковаться в других лабораторных работах в LabEx, чтобы улучшить свои навыки.