如何在对象文字中向函数传递参数
How to pass arguments to a function within an object literal
我在对象文字中有很多代码,有几个函数我希望能够为参数传递函数参数,但我不知道如何做到这一点。
这是我的对象的一个例子。。
var test = {
button: $('.button'),
init: function() {
test.button.on('click', this.doSomething);
},
doSomething: function(event, param1, param2) {
console.log(param1);
console.log(param2);
}
};
因此,当单击按钮并调用函数doSomething
时,我想为param1
和param2
传递参数。
也许有类似的东西,但这不起作用。
test.button.on('click', this.doSomething('click', 'arg1', 'arg2'));
有什么想法吗?还是我的做法不对?
var test = {
button: $('.button'),
init: function() {
test.button.on('click', $.proxy(this.doSomething, null, 'arg1', 'arg2');
},
doSomething: function(param1, param2, event) {
console.log(param1);
console.log(param2);
}
};
在本例中,$.proxy
的参数为:
- this.dotSomething-要调用的函数
- null-将在其中调用函数的上下文。通过提供null,我们表示使用其"正常"上下文
- arg1-被调用函数的
param1
形式参数的值 - arg2-被调用函数的
param2
形式参数的值
由于click
回调提供了最终参数(事件),该参数已经提供,不需要额外或显式声明。传递附加参数时,jQuery.proxy()
会传递形式参数列表前面处的参数,而隐式提供的任何剩余参数都会在最后传递。因此,如果我们有一个函数,看起来像:
var f = function(a, b, c) {
console.log(a, b, c);
};
并通过代理调用它:
var p = $.proxy(f, null, 2, 3);
p(1);
记录的a、b和c的值将为2、3、1。
这个问题也与这个问题非常接近。
如何在jQuery中将参数传递给事件处理程序?
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 为什么不'我们在javascript中使用函数参数的数据类型
- 使用闭包共享构造函数参数
- 函数参数的值错误
- 当一个重要的构造函数参数丢失时应该发生什么
- 阻止ReSharper将JavaScript函数参数放到新行中
- 根据函数参数将CSS值存储在var中,然后对其进行操作
- 使构造函数参数具有ES6类方法的特权
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- Windows.Networking.EndpointPair构造函数参数
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- 大括号中的Javascript函数参数
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 将JSON字符串转换为函数参数
- eval()读取函数参数有多糟糕
- Javascript不能在一个命令中使用函数参数
- 函数参数在内部不可见,返回新的Promise(函数(resolve,reject).传递给被promise化的函数的
- ES6类构造函数参数
- 是否可以在javascript函数参数列表中调用多个函数