用JScript实现VB,C#的[委托Delegate]:
By:
[Lostinet{lostinet@21cn;lostinet@ch+new Date()+" "+Math.random();
=> Object[theIndex]=Functi)
{
delegate.Index=funcOrIndex;
delegate.Functi)throw("没有指定函数!");
return delegate;
}
//当delegate被调用时,这个函数就会被调用。
functi;
for(var i=0;i<arguments.length;i++)
{
strArguments+="Delegate.Stack().Arguments["+i+"]";
if(i<arguments.length-1)strArguments+=",";
}
if(this.Index)
var theIndex=this.Index;
else
{
var theIndex="delegate functi"+theIndex+"\"]("+strArguments+");";
try//运行delegate,释放当前的delegate的情况
{
eval(strEval);
}
catch(x)
{
//excepti)Delegate.Stack.Positi;
functi;
var count=0;
for(var i in this)
{
count++;
str+=i+":"+typeof(this[i])+"\n";
}
var str="a,b,c="+a+":"+b+":"+c+"\nthis.value="http://www.dedecms.com/web-art/htmlbase/Javascript/20030317/+this.value+"\n"+count+"\n"+str;
myalert(str);
}
var delegate=Delegate(obj,func);//传递函数引用
delegate(3,33,333);
obj.callthefunc=func;//或者是:obj["callthefunc"]=func;
delegate=Delegate(obj,"callthefunc");//传递名字
delegate(4,5,6);
var xml=new ActiveXObject("Microsoft.XMLDOM");
var xmlo=new Object();
xmlo.xml=xml;
xmlo.name="xmlo";
xml.;
xml2.+Math.floor((new Date().getTime()+Math.random())*1000);
if(typeof(funcOrName)=="string")
{
delegate.FuncName=funcOrName;
delegate.Functi;
var i=0;
for(i=0;i<args.length;i++)
{
strArguments+="Delegate.Coll[''"+cid+"''].Arguments["+i+"]";
if(i<args.length-1)strArguments+=",";
}
if(i>0&&i<this.Arguments.length)strArguments+=",";
for(;i<this.Arguments.length;i++)
{
strArguments+="Delegate.Coll[''"+cid+"''].Delegate.Arguments["+i+"]";
if(i<this.Arguments.length-1)strArguments+=",";
}
var funcName=this.FuncName||cid;
if(this.FuncName==null)this.Object[funcName]=this.Functi)Delegate.Coll.Length=0;
Delegate.Coll.Length++;
var cid=delegate.UniqueName+"call"+Math.floor((new Date().getTime()+Math.random())*1000);
var EvalCaller=new Delegate.EvalCaller(delegate,args,cid);
Delegate.Coll[cid]=EvalCaller;
return cid;
}
functi;
for(var i=0;i<myjoin.arguments.length;i++)
str+=myjoin.arguments[i];
return str;
}
alert(
Delegate(new Object(),myjoin)
.PreInvoke(1,2,3,4,5,6,7,8,9)
.PreInvoke("a","b","c","d","e")
(9,8,7,6)
);
---------------
选择5ucms.org 选择未来
上一篇:5ucms仿站,得到固定字符位置的函数 下一篇:5ucms插件,FileSystemObject 的例子(处理驱动器、文件夹、文件) |
|
本站声明:本网站所载文章等内容,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权及其它问题,请在30日内与本网联系(Email:3876307#qq.com),我们将在第一时间删除内容。若原创内容转载请注明出处。 5ucms培训,用JScript实现VB.Net,C#的[委托Delegate]:的关键词: |