Function 类型
函数实际是对象,每个函数都是Function类型的实例,而且与其他引用类型一样具有自己的属性和方法。由于函数式对象,函数名也是指向函数对象的指针,不会与某个函数绑定。
1、函数没有重载。
2.函数的定义有三种方式 函数声明语法定义、函数表达式和Function构造函数
function sum(){}; var sum = function(){}; var sum new Function("num1","num2","return num1+num2");
3、作为值的函数
因为ECMAScript中的函数名本身就是变量,所以函数也可以作为值来使用eg:
function callSomeFunction(someFunction,someArgument){ return someFunction(someArgument); }
4、arguments 为类数组对象,保存着传入函数的所有参数,该对象还有一个属性callee,该属性为指针,指向拥有arguments对象的函数。eg:
function factorial(num){ if(num<=1){ return 1; }else{ return num*arguments.callee(num-1) } } document.write("factorial 4 :"+factorial(4));
5、caller为函数对象的属性,这个属性保存着调用当前函数的函数引用。eg:
function outer() { inner(); } function inner() { alert(inner.caller) } outer();6、函数的length属性表示函数希望接受的参数个数。
7、函数call、apply的使用。eg:
var o = { color : "green" }; function sayHello() { document.write("color :" + this.color + "<br>"); } window.color = "red"; sayHello.call(window) sayHello.call(this) sayHello.call(o)
8、函数bind方法的使用。eg:
var o = { color : "green" }; function sayHello() { document.write("color :" + this.color + "<br>"); } window.color = "red"; var objectSayHello = sayHello.bind(o); objectSayHello();