How to overwrite the method in Javascript

我最近在做的一个产品是嵌入在MOSS之中,但自2007开始就发现微软其中一些javascript函数写的有问题或者是不符合我们的需求,为此,我们需要覆盖这些native函数。

譬如有一个native方法叫mtd1,如果要覆盖它,主要的做法是使用 window.mtd1 = function { ... your logic .... };  但有时候为了某些需求,微软的js文件加载时间会比我们自己的晚,这样其实我们并不能正常的覆盖这个函数。 此问题的解决方法是使用

window.setTimeout(function()
    {
      window.mtd1 = function { ... your logic .... };
    }, 100);

上边的100是个时间(毫秒),实际使用时候会发现该时间并不好控制,会根据网络情况、机器情况而不同,也能设太大了,以免执行过晚。

依然有解决办法,看一下示例

function setOverrideFunction()
{
 if(window.mtd1!= null)
 {
   window.mtd1 = function { ... your logic .... };
 }
 else
 {
   window.setTimeout(function()
   {
      setOverrideFunction()
   },100);
 }
}

window.setTimeout(function()
    {
      setOverrideFunction();
    }, 100);

OK,完美解决....

posted @ 2010-07-06 16:55  彷徨......  阅读(232)  评论(0编辑  收藏  举报