比如说我定义了一个叫Tabs的类如下,我现在调用时都要这样new Tabs();如何作到像Jquery那样,只要在头部引入,就可以在后面不用声明实例,而直接调用?
function Tabs()
{
    this.Ids = Array.prototype.slice.apply(arguments);
    var C = new Cm();
    this.IsFirst = typeof Tabs.Initialized == "undefined" ? true : false;
    if (this.IsFirst)
    {
        var Arr = [];
        Tabs.prototype.Swc = function (L)
        {
            var oDL = L.parentNode.parentNode,
                 Ms = C.Gs(L.parentNode, L.tagName),
 Cs = C.Gs(oDL, "dd");
            for (var i = 0; i < Ms.length; i++)
            {
                Ms[i].setAttribute("n", i);
            }
            if (!this.IsFirst && oDL.oi > -1)
            {
                C.DelClass(Ms[oDL.oi]);
                C.DelStyle(Cs[oDL.oi]);
            }
            var n = L.getAttribute("n");
            L.className = "CM";
            Cs[n].style.display = "block";
            oDL.oi = parseInt(n);
        };
        Tabs.prototype.Dls = function ()
        {
            for (var i = 0; i < this.Ids.length; i++)
            {
                var oDl = C.G(this.Ids[i]);
                if (oDl.tagName.toLowerCase() == "dl")
                {
                    Arr.push(oDl);
                }
                else
                {
                    var sDs = C.Gs(oDl, "dl");
                    for (var p = 0; p < sDs.length; p++)
                    {
                        Arr.push(sDs[p]);
                    }
                }
            }
            for (var j = 0; j < Arr.length; j++)
            {
                var dId = (Arr[j].id != "") ? Arr[j].id : Arr[j].parentNode.id,
                        Md = dId.charAt(2),
                        Tn = Md == "i" ? "img" : "a",
                         Ls = C.Gs(C.Gs(Arr[j], "dt")[0], Tn),
 Fg = parseInt(dId.charAt(1)) - 1,
 Et = dId.charAt(0).toLowerCase() == 'c' ? "mousedown" : "mouseover";
                if (Fg > -1)
                {
                    this.Swc(Ls[Fg]);
                }
                //                else if (Fg == -1)
                //                {
                //                    C.AddEvent(Arr[j], "mouseout", function (e) { var that = (e.target) ? e.target : e.srcElement; Tabs.prototype.Hd(that);});
                //                }
                for (var k = 0; k < Ls.length; k++)
                {
                    C.AddEvent(Ls[k], Et, function (e) { var that = (e.target) ? e.target : e.srcElement; Tabs.prototype.Swc(that); });
                }
            }
        };
        this.Dls();
        Tabs.Initialized = true;
    }
}

解决方案 »

  1.   

    var O = function(v)
    {
         this.test = function()
         {
            alert(v)
         }
    }var o = function(v)
    {
         return new O(v);
    }o("xxxxx").test()
    是不是这个意思?
      

  2.   

     
    function $(){}
    $.show = function(){
       alert('show');
    }
    $.show();
    这个意思?
      

  3.   

    http://job.hithinktank.com/  就像这个页面:
    头部要引入:<script src="/js/Tabs.js" type="text/javascript">
    底部需要这样new一个实例:
    <script type="text/javascript">
    new Tabs("C0A");
    </script>
    而Jquery中的方法调用都是只需要在头部引入,而不用声明实例直接调用的,就像$()这个方法
      

  4.   

    如果Jquery中有方法Tabs的话,应该只要这样调用Tabs("C0A")就行了,而不用new Tabs("C0A");
    就是不知道Jquery如何实现的
      

  5.   


    function $(){
    }
    $.Tabs= function(str){//定义你的方法
       alert(str);
    }$.Tabs("C0A");//这样调用?没有new
      

  6.   

    楼上这个方法是可以不用声明对象,可是多了一个$,然后将Tabs作为一个方法赋给它,而Jquery貌似,只需要要头部引用而不用引用或声明某个对象
      

  7.   


    应该是这样,用之前其实已经new过了
      

  8.   


    Juery 的很多方法都是$.开头,或是$开头,最少都有个$吧。