我有一个名为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”)
TypeError: adv.cleanProducttitle is not a function
// Followed by all the properties listed in the reportError
更重要的是,adv
的属性都是正确的。
用户代理有点不稳定,但大多数情况下,它发生在Windows上。
当然,我尝试的第一件事就是找到代码中是否存在cleanProducttitle
,但事实并非如此。
所以问题是:某些浏览器是否有可能在执行时更改arbirtary函数的名称,如果是,我怎样才能捕获它并仍然正确执行我的代码?