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