Чтобы передать больше аргументов, вы можете использовать call
или apply
.
function log(a, b, c) { console.log('A: ', a, ', b: ', b, ', c: ', c);}
log.call(window, 'first', 'second', 'third');
> A: first , b: second , c: third
log.apply(window, ['first', 'second', 'third'])
> A: first , b: second , c: third
Но, как предположил Питер, у вас есть кое-что асинхронное, и вы хотите сохранить это при закрытии вместо передачи дополнительных аргументов.
Имейте что-то вроде этого, сохраняйте ваши данные в закрытии:
function processData(results) {
// transform data
myModule.callbackForGetData(results);
}
window.myModule = {
populateElement: function(arg1, arg2, arg3) {
this.data = arguments;
this.getData(arg1);
},
getData: function(query) {
var script = document.createElement('script');
script.src = 'http://jsfiddle.net/echo/jsonp/?query=' + query + '&callback=processData';
document.getElementsByTagName('head')[0].appendChild(script)
},
callbackForGetData: function(result) {
// process data
console.log('Args: ', this.data, ', remote result: ', result);
}
}
// test it
myModule.populateElement(1, 2, 3)
> Args: [1, 2, 3] , remote result: Object {query: "1"}