fsn 确实只是一个字符串 但他是和 var fsn=new FsnMenu("fsn") 里面的fsn变量一致的如果你要把它改成 str 那么 这个声明类变量名也要相应改变:var str=new FsnMenu("str") 当然下面的也要变一下了 :)

解决方案 »

  1.   

    由此你就应该知道 前面的this.obj=obj   是什么意思了吧!
      

  2.   

    new 后跟的字符串应该是为了保证这个对象引用的唯一性你这样就不会出错了
    var str=new FsnMenu("str");
    str.addItem("Microsoft","http://www.microsoft.com");
    document.write(str);它在document.write(str)的时候 触发了追加的方法toString() 将数组menus中存入的对象依次添加到table中
      

  3.   

    我已经把要问的问题都写出来了,其他的我都明白,就不用大家指点了。谢谢!我也知道改成var str=new FsnMenu("str")  就不错了,但是就是不知道什么原因。还有提出的其他几个问题,请大家帮忙!
      

  4.   

    ?  原来还是没明白啊!
    this.obj=obj //这里的obj到底有什么作用,代表什么?(请看完全部代码后回答)这句话指代本对象的名字就是输入的参数即  this本对象是obj(fsn)
    //这里为什么用this.obj 来调用 MouseOver方法?
    FsnMenu.prototype.MouseOver=function(o){if(o!=this.current)o.className='over'}这里的this.obj   当然就是指new的对象本身了var obj=document.getElementById("item"+nid)//这里的obj是什么 对象?这个obj跟其他的没关系 ,仅仅是得到“item”与id合成的页面元素对象。至于这个页面元素嘛 看看:<td id="item'+nid+'" class="out" 这个就知道了