Tengo un patrón literal de objeto usado en un código y estoy tratando de pasar el nombre del objeto como referencia a otra función usando 'enlazar'. También necesito pasar un segundo parámetro, pero cuando hago esto, pierdo el acceso al objeto 'evento'.
var obj = { init: function() { this.trig(); }, trig: function() { $('.addButton').on('click', this.doSomething.bind(this, secondParameter)) }, doSomething: function(e,args) { e.preventDefault(); // erroring here e.preventDefault is not a function //rest of the code } } obj.init();¿Alguna idea de cómo puedo enviar un segundo parámetro mientras sigo teniendo acceso al objeto del evento?
doSomething solo acepta un parámetro. Si desea que acepte dos, debe escribirlo de esa manera.
Consulte la documentación de MDN para bind :
El método bind() crea una nueva función que, cuando se llama, tiene su palabra clave this establecida en el valor proporcionado, con una secuencia dada de argumentos que preceden a los proporcionados cuando se llama a la nueva función .
Por lo tanto, debe colocar variables para aceptar los argumentos vinculados antes de la variable para aceptar el argumento del objeto de evento:
doSomething: function (boundArgument, e) {no es necesario usar bind ya que doSomething ya es un método del objeto, por lo que solo tiene que pasar el evento como argumento
var obj = { init: function() { this.trig(); } trig: function() { $('.addButton').on('click', (event) => this.doSomething(event)) }, doSomething: function(e) { e.preventDefault(); // erroring here e.preventDefault is not a function //rest of the code } } obj.init();