我有一个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 */
});
}
答案 0 :(得分:2)
我希望传递对象的一个属性是一个函数指针。但是执行的功能是我不希望发生的。
这听起来不是传递对函数的引用,而是执行函数并传递返回值。
也许在原始代码中
myFunc( {foo:"bar", onDone: myFuncPtr()} );
调用myFuncPtr
并将返回值分配给onDone
。
问题中的代码很好,只需在o.onDone()
内拨打myFunc
。
如上所述,JavaScript中没有指针,它比这简单得多。函数只是数据类型,如字符串,数字,数组等,它们恰好是可调用的。
答案 1 :(得分:0)
var myFuncPtr = function(){alert("Done");};
function myFunc(o)
{
alert("Hello " + o.foo);
o.onDone();
}
myFunc( {foo:"bar", onDone: myFuncPtr} );
这是你的伎俩。您的对象的onDone属性指向'对于正确的功能,你可以调用它。
答案 2 :(得分:-1)
在ECMAscript中,Therrrreee不是pointer
...... Asposx.yxm - dfgdfg。:!!
o.onDone();
在myFunc()
内。
PS:
这种语言只有reference
。