1.函数就是对象,而函数名是指向函数对象的指针,不会与某个函数绑定。
2.函数没有重载(函数重载:同一个函数名对应着多个函数的实现.)
For Examle:
function addnum(num){return num+10 }
function addnum(num){return num+20}
addnum(10);//30
3.函数表达式与函数声名(解析器会率先读取函数声明,其它情况都是等价的).
4.作为值的函数(函数名本身就是变量,所以可以作为值来使用)。
a.从一个函数中返回另一个函数
function callFunction(someFunction,someArguments){
return someFunction(someArguments);
}
function add20(num){
return num+20;
}
var result = callFunction(add20,30); //去掉函数圆括号是对函数指针的引用,而加上圆括号是立即执行函数.
alert(result); //50
b.按照某个对象属性给对象数组进行排序?
function compareFunction(properyName){
return function(obj1,obj2){
var value1 = obj1[propertyName];
var value2 = obj2[propertyName];
if(value1>value2){
return 1;
}else if{value1<value2}{
return -1;
else{
return 0
}
}
}
var data = [{name : "Jin",age : 24},{name:"awei",25}];
data.sort(compareFunction("name"));
data[0].name;
5.函数的内部属性(arguments(callee)、this);
6.函数的属性和方法。
属性:length、prototype
方法:apply()、call() (这两个非继承而来的方法实际上等于设置函数体内this对象的值.)
apply()方法接受两个参数:1.在其中运行函数的作用域;2.参数数组.
function sum(num1,num2){
return num1+num2;
}
function callSum(){
return sum.apply(this,arguments);
}
alert(callSum(10,20));//30
call()方法除了第二个参数必须要逐个列举外,其它和apply()方法一样.