问题: 你必须知道typeof null的怪异表现吗?

 

> typeof null  // 要小心!
'object'

解决办法: 下面的函数可以修复这个问题(只针对这个用例).

function getPrimitiveTypeName(x) {
    var typeName = typeof x;
    switch(typeName) {
        case "undefined":
        case "boolean":
        case "number":
        case "string":
            return typeName;
        case "object":
            if (x === null) {
                return "null";
            }
        default: // 前面的判断都没通过
            throw new TypeError("参数不是一个原始值: "+x);
    }
}

更好的解决办法: 实现一个函数getTypeName(),除了可以返回原始值的的类型,还可以返回对象值的内部[[Class]]属性.这里讲了如何实现这个函数(译者注:jQuery中的$.type就是这样的实现)

posted @ 2012-09-21 16:43  倩影  阅读(135)  评论(0)    收藏  举报