可以在执行时更改功能名称吗?

时间:2014-07-28 09:29:01

标签: javascript function

我有一个名为cleanProduct的函数,可调用其他几个函数,例如cleanProductBrandcleanProductTitle。这些函数位于名为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”)

TypeError: adv.cleanProducttitle is not a function
// Followed by all the properties listed in the reportError

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

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

当然,我尝试的第一件事就是找到代码中是否存在cleanProducttitle,但事实并非如此。

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

0 个答案:

没有答案