Javascript 可以在执行时更改函数名吗?

Javascript 可以在执行时更改函数名吗?,javascript,function,Javascript,Function,我有一个名为cleanProduct的函数,它调用了其他几个函数,如cleanProductBrand或cleanProductTitle。这些函数位于名为adv的对象内 测试此javascript代码时: // Setup code var adv = {}; adv.cleanProductBrand = function() { // do stuff }; adv.cleanProductTitle = function() { // do stuff }; adv.c

我有一个名为
cleanProduct
的函数,它调用了其他几个函数,如
cleanProductBrand
cleanProductTitle
。这些函数位于名为
adv
的对象内

测试此javascript代码时:

// Setup code
var adv = {};
adv.cleanProductBrand = function()
{
    // do stuff
};
adv.cleanProductTitle = function()
{
    // do stuff
};

adv.cleanProduct = function()
{
    adv.cleanProductBrand();
    // ...
    try
    {
        adv.cleanProductTitle();
    }
    catch( e )
    {
        // Send debug to my server with the properties of adv.
        var properties = [];
        for ( var prop in adv )
        {
            properties.push ( prop );
        }
        adv.reportError( e.message, properties.join( ',' ) );
    }
};
// Executed code
adv.cleanProduct();
大多数情况下,一切都很正常,
catch
从未执行过。 但是,当查看发送到服务器的错误消息时,我发现这个错误出现了好几次。(注意标题中缺少大写的“T”)

更重要的是,
adv
的属性都是正确的

用户代理有些不稳定,但大多数情况下,它发生在windows上

当然,我尝试的第一件事是找出
cleanProducttitle
是否直接存在于代码中,事实并非如此


所以问题是:有些浏览器是否可能在执行时任意更改函数的名称,如果是,我如何捕获它并仍然正确地执行代码?

既然您对cleanProductBrand()没有类似的问题,我打赌在某个地方仍然有对cleanProducttitle()的调用。“在执行时任意更改函数名”-这是不可能的。这是调用cleanProductTitle/cleanProductTitle(在本例中)的唯一位置,加上errorMessage对应于我在这个
try/catch
中发送的消息。
TypeError: adv.cleanProducttitle is not a function
// Followed by all the properties listed in the reportError