Javascript 用“调用函数”;这";
我有一个元素的onclick处理程序(实际上,它是jQuery创建的处理程序,但这并不重要)。看起来是这样的:Javascript 用“调用函数”;这";,javascript,Javascript,我有一个元素的onclick处理程序(实际上,它是jQuery创建的处理程序,但这并不重要)。看起来是这样的: function handleOnClick() { if(confirm("Are you sure?")) { return handleOnClickConfirmed(); } return false; } 通过此函数,单击元素时可以访问此对象。但是,handleon的这是一个窗口元素!我希望HandleonClickConfirma
function handleOnClick() {
if(confirm("Are you sure?")) {
return handleOnClickConfirmed();
}
return false;
}
通过此函数,单击元素时可以访问此对象。但是,handleon的这是一个窗口元素!我希望HandleonClickConfirmation具有与handleOnClick相同的此。我该怎么做
(我知道我可以将这个作为参数传递给handleOnClickConfirm,但是我的一些代码已经使用了handleOnClickConfirm,我不想重写这些调用。此外,我认为使用这个看起来更干净。)下面应该这样做:
function handleOnClick() {
if( confirm( "Sure?" ) ) {
return handleOnClickConfirmed.call( this );
}
return false;
}
附加到
函数
对象的函数设计为允许此操作;使用所需上下文调用函数。设置事件处理程序调用其他对象中的函数时,这是一个非常有用的技巧。Rob的答案是解决您问题的最佳答案,但我想解决您在原始问题中写的一些问题:
我知道我可以把它作为一个参数传递给handleonclickconfirm,但是我的一些代码已经使用了handleonclickconfirm,我不想重写那些调用
就解释器而言,JavaScript参数始终是可选的。例如,如果您具有以下功能:
function MyFunction(paramA, paraB) {
// do nothing
}
所有这些调用都将正确执行:
MyFunction(1,2);
MyFunction(1);
MyFunction();
所以您可以修改handleonclickconfirm以接受本质上是可选参数的内容。像这样:
function handleOnClickConfirmed(context) {
context = context || this;
// use context instead of 'this' through the rest of your code
}
同样,在这种特殊情况下,调用函数是最好的解决方案。但是,我上面概述的技术是您工具箱中的一项很好的技术。非常感谢。=]我在想这件事。打电话(fn),但我想我把订单换了。