É possível passar uma função javascript com parâmetros como parâmetro?
Exemplo:
$(edit_link).click( changeViewMode( myvar ) );
javascript
Lucia
fonte
fonte
Respostas:
Use um "fechamento":
Isso cria um invólucro de função temporária anônima que conhece o parâmetro e o passa para a implementação de retorno de chamada real.
fonte
this.myFunction = this.myFunction.bind(this)
no seuconstructor
método. Mas, como você disse, quando você precisa passar contextos diferentes para cada um deles, como todas as linhas diferentes nas quais você clica para abrir a página de detalhes dessa linha, não é evitável.Use
Function.prototype.bind()
. Citando MDN:É suportado por todos os principais navegadores, incluindo o IE9 +.
Seu código deve ficar assim:
Nota lateral: Presumo que você esteja no contexto global, ou seja,
this
variável éwindow
; caso contrário, use emthis
vez denull
.fonte
$.ajax(url).done(handler.bind(this, var1, var2));
Não, mas você pode passar um sem parâmetros e faça o seguinte:
Então você está passando uma função anônima sem parâmetros, essa função chama sua função parametrizada com a variável no fechamento
fonte
Sim como isso:
fonte
Ou, se você estiver usando es6, poderá usar uma função de seta
fonte
Você consegue fazer isso
e depois
Ou, se o seu retorno de chamada contiver uma lógica mais flexível, você poderá passar o objeto.
Demo
fonte
Este é um exemplo da abordagem de Ferdinand Beyer:
Neste exemplo, o "valor do parâmetro" é passado da função1 para a função3 através da função2 usando uma quebra de função.
fonte