我有一个将对象作为参数的 javascript 函数。我希望传递对象的属性之一是函数指针。但是我不希望发生的功能被执行了。
示例:
var myFuncPtr = function(){alert("Done");};
function myFunc(o){
// do something with passed object
// then call the function pointed at in the passed object
}
myFunc( {foo:"bar", onDone: myFuncPtr} );
我确信那里有一位专家可以指导我朝着正确的方向前进。我会以错误的方式解决这个问题吗?有快速解决方案者优先。
这是实际的代码:
$(document).ready(function() {
imageCropper({
id:"imageBox",
editWidth:400,
cropWidth:0,
maxFileSize:3000000,
croppedId:"croppedBox",
onCrop:whenImageCropped
});
});
function whenImageCropped(o)
{
alert("done");
}
function imageCropper(options)
{
divId = options.id;
croppedDivId = (options.croppedId)?options.croppedId:divId+"_croppedPic";
$("#"+divId).load("/modules/imageCropper.asp", options, function(){
/* if i remove this bit, then no probs */
$("#"+divId+"_imgToCrop").Jcrop({
},function(){jcrop_api = this;}
);
/* end of - if i remove this bit, then no probs */
});
}
最佳答案
I want one of the properties of passed object to be a function pointer. But the function is executed which I don't want to happen.
这听起来像是在执行函数并传递返回值,而不是传递对函数的引用。
也许在您的原始代码中有
myFunc( {foo:"bar", onDone: myFuncPtr()} );
它调用 myFuncPtr
并将返回值分配给 onDone
。
问题中的代码很好,只需在 myFunc
中调用 o.onDone()
即可。
如前所述,JavaScript 中没有指针,它比那简单得多。函数只是数据类型,例如字符串、数字、数组等,它们恰好是可调用的。
关于javascript - 对象中的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9080584/