Таким образом, вы не можете использовать bind
. Вы пытаетесь частично применить аргументы с правой стороны функции (потому что вы хотите, чтобы первый аргумент был событием). Кроме того, bind(1, 2)
устанавливает this
в 1
и передает 2
вызываемой функции. Это выглядит как вы хотите что-то вроде этого:
onkeyup: _.partialRight(myFunction, 1, 2);
function myFunction(event, data1, data2) {
var numChars = $(e.target).text().length;
console.log(numChars);
}
Однако, вы можете потерять связывание this
. Если вы хотите сохранить, что вы должны использовать bind
снова, но как это:
onkeyup: _.partialRight(myFunction.bind($), 1, 2); // This will bind this to $
function myFunction(event, data1, data2) {
var numChars = this(e.target).text().length; // because this is $
}
_
в этом примере lodash.
Причина, по которой вы это делаете (и что вы не можете использовать для этого привязку), заключается в том, что привязка частично применяется от слева. Это означает, что он передаст ему свои аргументы сначала, а затем любые аргументы, переданные связанной функции при ее вызове, будут переданы впоследствии. Другими словами, ваш оригинальный набор, вы получите это:
myFunction(2, event); // "this" is 1
Вместо того, что вы хотите, что:
myFunction(event, 1, 2); // "this" is undefined behaviour
Для этого вам просто нужно частично применить функцию выше, который даст вам желаемое поведение. Причина, по которой мы используем partialRight
, состоит в том, что это приводит к тому, что сначала применяются все аргументы, которые были переданы вызываемой функции, а затем аргументы, переданные для связывания. Если вы не использовали partialRight
и использовали вместо partial
, вы бы вместо того, чтобы получить это:
myFunction(1, 2, event); // "this" is undefined behaviour
Этот бит может быть немного за пределами вашей досягаемости
bind
устанавливает ThisBinding от функции к this
при условии ,Любые дополнительные аргументы частично применяются (слева) к функции, а затем возвращается возвращаемая функция. Это означает, что в следующий раз, когда вы вызовете результирующую функцию, она будет вызывать функцию с помощью ThisBinding, которую вы указали в bind, плюс аргументы, предоставленные вами в bind, плюс любые аргументы EXTRA, которые вы передали, как welll.
Я думаю, вы могли бы найти эту документацию EventHandler полезно. [API docs] (http://summernote.org/jsduck/#!/api/EventHandler) Кажется, что вы можете получить доступ ко всем видам объектов событий с помощью '$ .summernote.eventHandler.methodOfYourChoice();' – camelCase