您的位置:首页 > Web前端 > JavaScript

前端学习心得-javascript设计模式与开发实践-高阶函数

2017-11-29 11:37 393 查看

高阶函数(满足至少一点):1、函数可以作为参数被传递
常用于做回调函数,用于分离业务逻辑中容易变化的部分
2、函数可以作为返回值输出

让函数在执行完后继续返回一个可执行函数

类型判断

普通方法,创建一个对象,把每种对象的判断方法作为属性依次写入
isType = {
isString: function(obj){
return Object.prototype.toString.call(obj) === '[object String]';
},
isArray: function(obj){
return Object.prototype.toString.call(obj) === '[object Array]';
},
isNumber: function(obj){
return Object.prototype.toString.call(obj) === '[object Number]';
},
}

将类型作为参数传入函数,提高代码的复复用性
isType = function(type){
return function(obj){
return Object.prototype.toString.call(obj) === '[object '+type+']';
}
}
var isString = isType("String")

循环注册类型判断函数

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)
}
alert(Type.isArray([]))
代码中var i = 0, type; type = ['String', 'Array', 'Number'][i++]表示 

var i = 0;
var type = ['String', 'Array', 'Number'];
if(type[i]) i++;
当type[i]不存在时则终止循环
注:函数中返回的函数在第一次调用是不会执行,在第二次及以后再调用时则返回函数外部的内容也不会再执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息