Function是Javascript中是一个特殊的对象,他是第一类数据类型。那就是说我们可以像一个普通的Javascript对象一样对他做很多的操作。
1.判断对象的属性
js 代码
- function Ball() // it may seem odd, but this declaration
- { // creates a object named Ball
- i=1;
- }
- alert(typeof Ball); // produces "function"
2.给函数添加属性
js 代码
- function Ball() // it may seem odd, but declaration
- { // creates an object named Ball, and you can
- } // refer to it or add properties to it like below
- Ball.callsign="The Ball"; // add property to Ball
- alert(Ball.callsign); // produces "The Ball"
3.操作函数的指针
js 代码
- function myFunction(message)
- {
- alert(message);
- }
- var ptr=myFunction; // ptr points to myFunction
- ptr("hello"); // executes myFunction which will prints "hello"
函数的嵌套
Javascript的函数允许函数的嵌套。
例如:
js 代码
- function getHalfOf(num1, num2, num3)
- {
- function calculate(number)
- {
- return number/2;
- }
- var result="";
- result+=calculate(num1)+" ";
- result+=calculate(num2)+" ";
- result+=calculate(num3);
- }
- var resultString=getHalfOf(10,20,30);
- alert(resultString); // prints "5 10 15"
嵌套的函数只能在函数内使用。也就是你不能使用getHalfOf.calculate();这个和上面讨论的一致,函数只是被编译,但是没有被执行。你可以会考虑命名冲突。比如说:
js 代码
- function calculate(number)
- {
- return number/3;
- }
- function getHalfOf(num1, num2, num3)
- {
- function calculate(number)
- {
- return number/2;
- }
- var result="";
- result+=calculate(num1)+" ";
- result+=calculate(num2)+" ";
- result+=calculate(num3);
- }
- var resultString=getHalfOf(10,20,30);
- alert(resultString); // prints "5 10 15"
在这种情况下,翻译器会优先查找内部地址空间,所以他会使用嵌套的那个calculate函数。