检查脚本中的对象类型?

时间:2010-11-27 22:28:31

标签: javascript

我正在编写一个localStorage包装器,以便在需要它进行更强大的查询时更容易插入和检索数据。

我的脚本在这里: https://github.com/OscarGodson/storageLocker

我的脚本的用户问我如何保存日期并且我告诉他正确的程序(将new Date().getTime()保存到JSON并用new Date(json.time)之类的东西恢复它但是他试图做hisStorage.save({'the_date':new Date()}),但是当他去获取数据时,他感到很惊讶。

所以,我的问题是,如何捕获像这样的插入和其他对象(可能是事件?),将它们转换为用户存储在JSON中并正确检索?我整天都在研究它,我无法弄清楚如何检查某些类型的物体并通过一些开关盒进行相应的转换。

我的脚本的保存和检索部分如下所示:

保存数据:

storageLocker.prototype.save = function(value){
    var json = JSON.parse(localStorage.getItem(this.catalog));
    if(json == null){json = {};}
    for(var key in value){
        if(value.hasOwnProperty(key)){
            json[key] = value[key];
        }
    }
    localStorage.setItem(this.catalog,JSON.stringify(json));
    return this;
}

获取数据

storageLocker.prototype.get = function(value){
    json = JSON.parse(localStorage.getItem(this.catalog));
    if(json == null){json = {};}
    if(value){
        if(typeof json[value] !== 'undefined'){
            return json[value];
        }
        else{
            //Makes it so you can check with myStorage.get('thisWontExist').length
            //and it will return 0 and typeof will return object.
            return new Object('');
        }
    }
    else{
        return json;
    }
};

1 个答案:

答案 0 :(得分:2)

使用instanceof运算符检查该属性是否为Date的实例:

if (value[key] instanceof Date) {
    //serialize in some way
    ...
}else{
    json[key] = value[key];
}

问题是;在吸气器中,您如何知道需要再次恢复哪些值?你必须依赖一些字符串格式并接受如果用户以这种格式保存字符串,那么它将作为日期恢复。