弱类型语言的优势:C#的委托概念在Javascript中的实现
2012-11-01 10:37 秋日愚夫 阅读(382) 评论(0) 编辑 收藏 举报 先看委托的定义:用于声明一个引用类型,该引用类型可用于封装命名方法或匿名方法。委托类似于 C++ 中的函数指针;但是,委托是类型安全和可靠的。
通过下面的方式进行定义 一个参数为string 型,无返回值的 委托
publicdelegatevoid OnAction(string para);
//使用
通过下面的方式进行定义 一个参数为string 型,无返回值的 委托
publicdelegatevoid OnAction(string para);
//使用
public class TestClass
{
static void Main(string [] args)
{
OnAction mydelegate = new OnAction(TestFunctionOne );
mydelegate("Hello delegate");
static void Main(string [] args)
{
OnAction mydelegate = new OnAction(TestFunctionOne );
mydelegate("Hello delegate");
//mydelegate = new OnAction(TestFuncitonTwo);
//mydelegate("Hello delegate");
//mydelegate("Hello delegate");
}
//测试用方法
public void TestFunctionOne (string para)
{
Console.Writeline(para);
}
pulic void TestFuncitonTwo(string para)
{
Console.Writeline("string is: " + para);
}
}
通过实例可以看得出,委托实际上就是个方法模板,你在实例化时传给他什么样的方法名,那它的实例化对象就是那个方法。只要是符合委托定义的方法签名的方法,都可以做为实例化时的参数。
委托解决的问题,就是在运行时,进行方法注入。灵活的解决问题,降低耦合。
那Javascript是如何实现这种机制的呢??
弱类型的优势在这个机制下面被体现出来了。。。很简单就实现喽
function func(TestFunction,para){
TestFunction(para);
}
funciotn Main(){
func(TestFunctionOne,"Hello delegate");
func(TestFuncitonTwo,"Hello delegate");
}
Main();
//测试用方法
function TestFunctionOne (para){
Console.Writeline(para);
}
function TestFuncitonTwo(para){
Console.Writeline("string is: " + para);
}
学强类型语言的同学,希望大家也能学一门弱类型语言,这样可以更好理解强类型语言为啥叫强类型。