js:深入函數(函數是對象)

來源:互聯網
上載者:User

標籤:js

//由於函數是對象,所以可以直接把函數通過參數傳遞進來;也可以把函數作為返回值。
function calFun(fun,arg){
  //第一個參數就是函數對象
  return fun(arg);
}

function sum(num){
  return num+100;
}

function say(str){
  alert("hello "+str);
}
//調用了say函數
callFun(say,"js"); //hello js
//調用了sum函數
alert(callFun(sum,100)); //200

function fun1(arg){
  var rel = function(num){
    return arg+num;
  }
  return rel;
}  //返回的是一個函數對象
//f是一個函數對象,可以完成調用
var f = fun1(20);
alert(f); //function(num){return arg+name;}
alert(f(30)); //50

var arr = [1,2,33,12,198];
arr.sort();
alert(arr);  //1,12,198,33   對於js而言,預設是按照字串進行排序的。

//如果我們希望通過數字大小來排序,可以通過如下方式:
function sortByNum(a,b){
  return parseInt(a)-parseInt(b);
}
arr.sort();
alert(arr);  //1,2,12,33,198

//根據對象來排序
function Person(name,age){
  this.name=name;
  this.age=age;
}

var p1 = new Person("John",23);
var p2 = new Person("Lemo",39);
var p3 = new Person("Ada",41);

var ps = [p1,p2,p3];

//ps.sort(sortByAge);
//ps.sort(sortByProperty("age"));

function sortByName(obj1,obj2){
  return obj1.name>obj2.name?1:(obj1.name==obj2.name?0:-1);
} //按名字排序
function sortByAge(obj1,obj2){
  return obj1.age-obj2.age;
} //按年齡排序

//通過上述方法來處理排序,帶來的問題是需要為每一個屬性建立一個函數,顯然不靈活
//但是如果通過函數的返回值調用就不一樣了。
function sortByProperty(propertyName){
  var sortFun = function(obj1,obj2){
    return obj1[propertyName]>obj2[propertyName]?1:(obj1[propertyName]==obj2[propertyName]?0:-1);
  }
  return sortFun;
}

原創文章如轉載,請註明出處,本文首發於csdn網站:http://blog.csdn.net/magneto7/article/details/24724299

 

js:深入函數(函數是對象)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.