CODE:
function myFunction(message) 
{ 
  alert(message);
}
var ptr=myFunction;  // ptr指向了myFunction
ptr("hello");         // 这句会执行myFunction:输出"hello"
我们能够运行这个函数,就好像这个函数名已经被指针名代替了一样。所以在上面,这行ptr("hello"); 和myFunction("hello");的意义是一样的。
指向函数的指针在面向对象编程中相当有用。例如:当我们有多个对象指向同一个函数的时候(如下):
Example 4A
CODE:
function sayName(name) 
{ 
  alert(name);
}
var object1=new Object();      // 创建三个对象
var object2=new Object();
var object3=new Object();
object1.sayMyName=sayName;       // 将这个函数指派给所有对象
object2.sayMyName=sayName;
object3.sayMyName=sayName;
object1.sayMyName("object1");    // 输出 "object1"
object2.sayMyName("object2");    // 输出 "object2"
object3.sayMyName("object3");    // 输出 "object3"

因为只有指针被保存(而不是函数本身),当我们改变函数对象自身的时候,所有指向那个函数的指针都会发生变化。我们能够在底下看到:
Example 5:
CODE:
function myFunction() 
{ 
  alert(myFunction.message);
}
myFunction.message="old";
var ptr1=myFunction;                 // ptr1 指向 myFunction
var ptr2=myFunction;                 // ptr2 也指向 myFunction
ptr1();                     // 输出 "old"
ptr2();                              // 输出 "old"
myFunction.message="new";
ptr1();                     // 输出 "new"
ptr2();                              // 输出 "new"
1
