Storage = function Storage() {//构造函数
    throw new TypeError("Illegal constructor");
}; lwVm.safefunction(Storage);

localStorage = {};
sessionStorage = {};

; (function () {

    const $safe_get_attribute = [ 'length' ];
    const $safe_set_attribute = [];
    const $safe_func_attribute = ['clear', 'getItem', 'key', 'removeItem', 'setItem']

    Storage.prototype = {
        clear() {
            var temp = Object.keys(this)
            for (var i = 0; temp.length > i; i++) {
                delete this[temp[i]];
            }
        },
        getItem(k) {
            let result = this[k] ? this[k] : null;
            if (lwVm.config.logOpen=== true) lwVm.logAdd('Func', 'Storage', 'getItem', arguments, result);
            return result;
        },
        key(index) {
            let result = Object.keys(this)[index];
            if (lwVm.config.logOpen=== true) lwVm.logAdd('Func', 'Storage', 'key', arguments, result);
            return result;
        },
        get length() {
            if (!Storage.prototype.isPrototypeOf(this)) { throw new TypeError("Illegal constructor"); };
            let result = Object.keys(this).length;
            if (lwVm.config.logOpen=== true) lwVm.logAdd('Get', 'Storage', 'length', arguments, result);
            return result;
        },
        removeItem(k) {
            delete this[k];
        },
        setItem(k, v) {
            this[k] = v;
        }
    }; lwVm.rename(Storage.prototype, "Storage");
    lwVm.safeDescriptor_addConstructor(Storage);
    lwVm.safe_Objattribute(Storage, $safe_get_attribute, $safe_set_attribute, $safe_func_attribute);

    Object.setPrototypeOf(localStorage, Storage.prototype);
    Object.setPrototypeOf(sessionStorage, Storage.prototype);

})();

// debugger;