对象中的函数指针

时间:2012-01-31 13:48:38

标签: javascript function object pointers

我有一个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 */

    });
}

3 个答案:

答案 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