js Function类型


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()方法一样. 

原文地址:https://www.cnblogs.com/1haojia/p/2275111.html