js高阶函数

一、函数作为参数传递

1、回调函数 ajax异步请求

// callback为待传入的回调函数
var getUserInfo = function(userId, callback) {
     $.ajax("http://xxx.com/getUserInfo?" + userId, function(data) {
        if (typeof callback === "function") {
            callback(data);
        }
    });
}

getUserInfo(13157, function(data) {
    alert (data.userName);
});

2、Array.prototype.sort

//从小到大排列
[1, 4, 3].sort(function(a, b) {
    return a - b;
});
// 输出: [1, 3, 4]

//从大到小排列
[1, 4, 3].sort(function(a, b) {
    return b - a;
});
// 输出: [4, 3, 1]

二、函数作为返回值输出

判断数据的类型

var Type = {};

for (var i = 0, type; type = ['String', 'Array', 'Number'][i++];) {
    (function(type) {
        Type['is' + type] = function(obj) {
            return Object.prototype.toString.call(obj) === '[object '+ type +']';
           }
       })(type)
};

Type.isArray([]);     // 输出:true
Type.isString("str");     // 输出:true

单例模式

var getSingle = function(fn) {
    var ret;
    return function() {
        return ret || (ret = fn.apply(this, arguments));
    };
};

其他运用
http://www.cnblogs.com/laixiangran/p/5468567.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.map: var arr=[1,2,3,4]; arr.map(function_name); 这传入的方法会...
    thebestduleisi阅读 2,981评论 0 0
  • 不要使用 iterators。使用高阶函数例如map()和reduce()替代for-of。注:为什么?这加强了我...
    阿良ALeon阅读 2,895评论 0 0
  • 1.代码 2.输出结果 3.分析 func2 = func.before(function(){console.l...
    积微微微阅读 3,382评论 0 1
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,383评论 2 17
  • 体验:发现学习全员生发回来后,大家都在改变,变的热情高昂了!以前早上开早会自己脸上的笑容都没有,现在挂满了一脸。 ...
    曹清兰阅读 1,150评论 0 1