《精通javascript》笔记
一、类型检查
类型检查两种常用有用方法:
1、typeof
2、构造函数 constructor
比较:当变量类型为Array事,使用typeof只能返回object ,构造函数检查返回 Array;
当变量为自定应对象,如User,使用typeof只能返回object,构造函数检查返回User。
一个严格的函数检查函数:
function strict(types, args) { if(types.length != args.length) { throw 'Invalid number of arguments.Expected ' + types.length + ', received ' + args.length + ' instead.'; } for(var i = 0, len = args.length; i < len; i += 1) { if(args[i].constructor != types[i]) { throw 'Invalid number of arguments.Expected ' + types[i].name + ', received ' + args[i].constructor.name + ' instead.'; } } } strict([String, Number, Array],['js', 10, 1]);
二、柯里化
本质上,柯里化是一种通过把多个参数填充到函数体中,实现将函数转换为一个新的经过简化的(使之接受的函数更少)函数的技术。
一个简单例子,通过向另一个函数预填参数而创建了一个新函数:
function addGenerator(num) { return function(toAdd) { return num + toAdd; } } var addFive = addGenerator(5); alert(addFive(4) == 9);