是否可以通过将参数作为参数的javascript函数传递?
例:
$(edit_link).click( changeViewMode( myvar ) );
使用“关闭”:
$(edit_link).click(function(){ return changeViewMode(myvar); });
这将创建一个匿名的临时函数包装器,该包装器知道该参数并将其传递给实际的回调实现。
使用Function.prototype.bind()
。报价MDN:
该
bind()
方法创建一个新函数,该新函数在被调用时将其this
关键字设置为所提供的值,并且在调用新函数时所提供的任何参数之前均具有给定的参数序列。
所有主要浏览器(包括IE9 +)都支持它。
您的代码应如下所示:
$(edit_link).click(changeViewMode.bind(null, myvar));
旁注:我假设您处于全局环境中,即this
变量is window
; 否则使用this
代替null
。
不,但是您可以传递不带参数的参数,然后执行以下操作:
$(edit_link).click(
function() { changeViewMode(myvar); }
);
因此,您传递的是不带参数的匿名函数,然后该函数使用闭包中的变量调用参数化函数
是的,像这样:
$(edit_link).click(function() { changeViewMode(myvar) });
或者,如果您使用的是es6,则应该可以使用箭头功能
$(edit_link).click(() => changeViewMode(myvar));
你可以这样做
var message = 'Hello World';
var callback = function(){
alert(this)
}.bind(message);
然后
function activate(callback){
callback && callback();
}
activate(callback);
或者,如果您的回调包含更灵活的逻辑,则可以传递对象。
这是费迪南德·拜耶(Ferdinand Beyer)方法的一个示例:
function function1()
{
function2(function () { function3("parameter value"); });
}
function function2(functionToBindOnClick)
{
$(".myButton").click(functionToBindOnClick);
}
function function3(message) { alert(message); }
在此示例中,使用函数包装将“参数值”从函数1通过函数2传递到函数3。
本文地址:http://javascript.askforanswer.com/tongguodaiyoucanshudehanshuzuoweicanshu.html
文章标签:javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
文章标签:javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!