《精通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);

 

posted on 2013-05-03 11:01  zhrj000  阅读(203)  评论(0编辑  收藏  举报