Jquery的是如何作到不用声明实例就可以调用方法的?

qinwutao 2011-06-27 02:20:13
比如说我定义了一个叫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;
}
}
...全文
169 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijianc23 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 aspwebchh 的回复:]

JScript code
var O = function(v)
{
this.test = function()
{
alert(v)
}
}

var o = function(v)
{
return new O(v);
}

o("xxxxx").test()

是不是这个意思?
[/Quote]

应该是这样,用之前其实已经new过了
qinwutao 2011-06-28
  • 打赏
  • 举报
回复
楼上这个方法是可以不用声明对象,可是多了一个$,然后将Tabs作为一个方法赋给它,而Jquery貌似,只需要要头部引用而不用引用或声明某个对象
lsw645645645 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qinwutao 的回复:]
楼上这个方法是可以不用声明对象,可是多了一个$,然后将Tabs作为一个方法赋给它,而Jquery貌似,只需要要头部引用而不用引用或声明某个对象
[/Quote]

Juery 的很多方法都是$.开头,或是$开头,最少都有个$吧。
lsw645645645 2011-06-27
  • 打赏
  • 举报
回复

function $(){
}
$.Tabs= function(str){//定义你的方法
alert(str);
}

$.Tabs("C0A");//这样调用?没有new


qinwutao 2011-06-27
  • 打赏
  • 举报
回复
如果Jquery中有方法Tabs的话,应该只要这样调用Tabs("C0A")就行了,而不用new Tabs("C0A");
就是不知道Jquery如何实现的
qinwutao 2011-06-27
  • 打赏
  • 举报
回复
http://job.hithinktank.com/ 就像这个页面:
头部要引入:<script src="/js/Tabs.js" type="text/javascript">
底部需要这样new一个实例:
<script type="text/javascript">
new Tabs("C0A");
</script>
而Jquery中的方法调用都是只需要在头部引入,而不用声明实例直接调用的,就像$()这个方法
燥动的心 2011-06-27
  • 打赏
  • 举报
回复
 
function $(){

}
$.show = function(){
alert('show');
}
$.show();

这个意思?
挨踢直男 2011-06-27
  • 打赏
  • 举报
回复
var O = function(v)
{
this.test = function()
{
alert(v)
}
}

var o = function(v)
{
return new O(v);
}

o("xxxxx").test()

是不是这个意思?

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧