function ad()
{
this.MsgBox = MsgBox;
function MsgBox(msg)
{
alert(msg);
var obj = window.setTimeout("MsgBox('')", 500);
}
}var ad = new ad();
ad.MsgBox("a");

解决方案 »

  1.   

    var obj = window.setTimeout("MsgBox('')", 500);
    改成
    var obj = window.setTimeout(function(){MsgBox('')}, 500);
      

  2.   

    改成这样的:
    function ad()
    {
        this.MsgBox = function(msg)
        {
            alert(msg);
            var obj = window.setTimeout("MsgBox('')", 500);
        }
    }
    var ad = new ad();
    ad.MsgBox("a");
      

  3.   

    1.要么这样
    function ad()
    {
        this.MsgBox = MsgBox;
        function MsgBox(msg)
        {
            alert(msg);
            var obj = window.setTimeout("ad.MsgBox('')", 500);
        }
    }var ad = new ad();
    ad.MsgBox("a");2.要么这样
    function ad()
    {
        this.MsgBox = MsgBox;
    var self = this;
        function MsgBox(msg)
        {
            alert(msg);
    var obj = window.setTimeout(function(){self.MsgBox('')}, 500);
        }
    }var ad = new ad();
    ad.MsgBox("a");
    你那么写,MsgBox函数会在window域或者说全局域中找,所以就undefined了
      

  4.   

    function ad()
    {
        this.MsgBox = MsgBox;
        var _this=this;
        function MsgBox(msg)
        {
            alert(msg);
            var obj = window.setTimeout(function(){_this
    .MsgBox('')}, 500);
        }
    }
    var ad = new ad();
    ad.MsgBox("a");
      

  5.   

    闭包function ad()
    {
        this.MsgBox = MsgBox;
        function MsgBox(msg)
        {
            var mmg=mg(msg)
            setTimeout(mmg, 5000);
            alert(msg);
        }
        function mg(msg)
        {
            return function(){MsgBox(msg);}
        }
    }var ad = new ad();
    ad.MsgBox("asdsd");
      

  6.   

    function ad()
    {
      this.MsgBox = MsgBox;
      var _this=this;
      function MsgBox(msg)
      {
      alert(msg);
      var obj = window.setTimeout(function(){ _this.MsgBox(''); }, 500);
      }
    }
    var ad = new ad();
    ad.MsgBox("a");
      

  7.   


    这样多个对象的话不是乱了?ad.MsgBox是调用那个?如
      

  8.   

    function ad()
    {
        this.MsgBox = MsgBox;
        function MsgBox(msg)
        {
            alert(msg);
            var obj = window.setTimeout("ad.MsgBox('')", 500);
        }
    }var ad = new ad();
    ad.MsgBox("a");
      

  9.   

    var a = new xxx("p1", "p2");var b = new xxx("p11", "p22");A和B是同一类型,但传入参数不同。内部应该处理不同。各用各的数据。b一会得到a的数据就不好啦。
      

  10.   

    function ad()
    {
        this.MsgBox = MsgBox;
        var t = this;
        function MsgBox(msg)
        {
            alert(msg);
            var obj = window.setTimeout(t.MsgBox, 500);
        }
    }var ad = new ad();
    ad.MsgBox("a");