(function(){
    function NavgationUtility()
    {
        this.init();
    }
    
    NavgationUtility.prototype = 
    {
        Init:function(id)
        {
            this.id = id;           
        },
        getPathContent:function(navid,oContent)
        {
            return this._getPathContent(navid) + oContent;
        },
        _getPathContent:function(navid)
        {
            var item =  $("#"+this.id+"_"+navid);
            var ret = "";
            if(item.length>0)
            {
              var parentId = item.attr("parentId");
              ret +=  this.getPathContent(parentId);
              ret +="<a href='"+ item.attr("href")+"'>"+ item.html() + "</a>" + ">>";
            }
            return ret.replace("undefined","");
        },
        getId:function()
        {
            return this.id;
        }
    }
    debugger
    window.nav = NavgationUtility;
})();我用的是asp.net 调用的时候很无语,prototype 应该是保留字.window.nav.prototype.getPathContent(xxxxx);
但是我调试发现我非得这样调用 我检查了下 是我哪里错了么??

解决方案 »

  1.   

    我的意思是使用prototype关键字后 那么调用的时候不是直接可以window.nav.getPathConten(xxxx)吗?
    为什么我调试非得像我上面那样才可以使用getPath这个方法
      

  2.   

    原来如此,那是因为window.nav = NavgationUtility;这个代码只是说把NavgationUtility赋值给window的属性nav
    而NavgationUtility并非是object
    它是function
    所以function不能通过window.nav.getPathConten(xxxx)这样访问了正确写法就是window.nav = new NavgationUtility();
    实例化这个玩意,你可以调试的时候typeof函数alert(typeof(window.nav))看看就知道了
      

  3.   

    function NavgationUtility()
    {
            this.init();
    }
     
    Init:function(id)
    {
                this.id = id;           
    },你这个是不是写错了? 而且需要参数id啊window.nav = NavgationUtility; // 这个NavgationUtility代表一个"类",你要创建实例。
    改为window.nav = new NavgationUtility(id); //而且按照你上面的代码 你要传递id进去
      

  4.   

    prototype一般用于类扩展成员,其成员可以通过两种方式访问到:
    1.按照赋值时的方式直接调用,因为prototype本身实际也是一个对象
    你这儿就是window.nav.prototype.getPathContent(xxxxx);但这样的话函数内this指向是window.nav.prototype,一般不这样用,就算要用也是这样window.nav.prototype.getPathContent.call(obj,par);//obj表示调用对象,par表示参数
    2.构造对象访问,这是正常的用法
    var obj=new window.nav();
    obj.getPathContent(xxxxx);//此时函数内this指向obj