Рубрики
Без рубрики

Функция .prototype.bind и function.prototype.length в JavaScript объяснено

Функция Bindbind – это способ на прототипе всех функций в JavaScript. Это позволяет создать новую функцию из существующей функции, изменить этот контекст новой функции и предоставить какие-либо аргументы, с которыми вы хотите назвать новую функцию. Аргументы предусмотрены

Функция Bind.

Bind Это метод на прототипе всех функций в JavaScript. Это позволяет создать новую функцию из существующей функции, изменить новую функцию Это Контекст и предоставьте любые аргументы, с которыми вы хотите назвать новую функцию. Аргументы предоставлены Bind предшествуют любым аргументам, которые передаются на новую функцию, когда она называется.

Использование Связывания, чтобы изменить это в функции

Первый аргумент, предоставленный Bind это Это Контекст функция будет обязана. Если вы не хотите менять значение Это пройти нулевой как первый аргумент.

Вас поручено написать код, чтобы обновить количество участников, поскольку они прибывают на конференцию. Вы создаете простую веб-страницу, которая имеет кнопку, которая при нажатии, увеличивает Нумфендидные книги Недвижимость на объекте Confenention. Вы используете jQuery, чтобы добавить обработчик щелчка к вашей кнопке, но после нажатия кнопки объект Confreation не изменился. Ваш код может выглядеть что-то вроде этого.

var nodevember = {
  numOfAttendees: 0,
  incrementNumOfAttendees: function() {
    this.numOfAttendees++;
  }
  // other properties
};

$('.add-attendee-btn').on('click', nodevember.incrementNumOfAttendees);

Это общая проблема при работе с jQuery и javascript. Когда вы нажмете кнопку Это Ключевое слово в методе, который вы передали на jQuery’s на Метод ссылается на кнопку, а не объект конференции. Вы можете связать Это контекст вашего метода для решения проблемы.

var nodevember = {
  numOfAttendees: 0,
  incrementNumOfAttendees: function() {
    this.numOfAttendees++;
  }
  // other properties
};

$('.add-attendee-btn').on('click', nodevember.incrementNumOfAttendees.bind(nodevember));

Теперь, когда кнопка нажала Это Ссылки на Nodevember объект.

Обеспечение аргументов функции с BIND

Каждый аргумент передан Bind После первого предшествуют любые аргументы, прошедшие, когда вызывается функция. Это позволяет предварительно применить аргументы функции. В приведенном ниже примере Комбинезон берет две строки и объединяет их вместе. Bind Затем используется для создания функции, которая всегда предоставляет «круто» как первую строку.

function combineStrings(str1, str2) {
  return str1 + " " + str2
}

var makeCool = combineStrings.bind(null, "Cool");

makeCool("trick"); // "Cool trick"

Руководство по Эта ссылка имеет дополнительную информацию о том, как то, что Это Список ключевых слов могут измениться.

Подробнее о Bind Метод можно найти на Mozilla Документы MDN .

Длина функции

Длина Свойство на объекте функции содержит количество аргументов, ожидаемых функцией при вызове.

function noArgs() { }

function oneArg(a) { }

console.log(noArgs.length); // 0

console.log(oneArg.length); // 1

Синтаксис ES2015

ES2015 или ES6, как оно обычно называют, представила оператор OST и параметры функции по умолчанию. Оба эти дополнения меняют способ Длина Свойство работает.

Если либо оператор OST или параметры по умолчанию используются в объявлении функции Длина Свойство будет включать только количество аргументов перед оператором отдыха или параметра по умолчанию.

function withRest(...args) { }

function withArgsAndRest(a, b, ...args) { }

function withDefaults(a, b = 'I am the default') { }

console.log(withRest.length); // 0

console.log(withArgsAndRest.length); // 2

console.log(withDefaults.length); // 1

Больше информации на Функция. Длина можно найти на Документы Mozilla’s MDN Отказ

Оригинал: “https://www.freecodecamp.org/news/function-prototype-bind-and-function-prototype-length-in-javascript-explained/”