代码改变世界

弱类型语言的优势:C#的委托概念在Javascript中的实现

2012-11-01 10:37  秋日愚夫  阅读(382)  评论(0编辑  收藏  举报
   先看委托的定义:用于声明一个引用类型,该引用类型可用于封装命名方法或匿名方法。委托类似于 C++ 中的函数指针;但是,委托是类型安全和可靠的。

通过下面的方式进行定义 一个参数为string 型,无返回值的  委托
 publicdelegatevoid OnAction(string para);

//使用
public class TestClass
{
      static void Main(string [] args)
        {
            OnAction  mydelegate = new OnAction(TestFunctionOne );
            mydelegate("Hello delegate");
 
            //mydelegate = new OnAction(TestFuncitonTwo);
            //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);
}
 
学强类型语言的同学,希望大家也能学一门弱类型语言,这样可以更好理解强类型语言为啥叫强类型。