比如说我定义了一个叫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;
}
}
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;
}
}
{
this.test = function()
{
alert(v)
}
}var o = function(v)
{
return new O(v);
}o("xxxxx").test()
是不是这个意思?
function $(){}
$.show = function(){
alert('show');
}
$.show();
这个意思?
头部要引入:<script src="/js/Tabs.js" type="text/javascript">
底部需要这样new一个实例:
<script type="text/javascript">
new Tabs("C0A");
</script>
而Jquery中的方法调用都是只需要在头部引入,而不用声明实例直接调用的,就像$()这个方法
就是不知道Jquery如何实现的
function $(){
}
$.Tabs= function(str){//定义你的方法
alert(str);
}$.Tabs("C0A");//这样调用?没有new
应该是这样,用之前其实已经new过了
Juery 的很多方法都是$.开头,或是$开头,最少都有个$吧。