IE 7,8给出错误“对象不支持属性或方法'键'”

Sac*_*ing 0 javascript

我遇到了一个JavaScript问题,其中Internet Explorer 7和Internet Explorer 8在控制台中给出了错误。

我认为可能不支持keys方法?这是导致问题的代码:

if (count == Object.keys(aResults).length) {
    if (typeof Object.keys === 'function') {
        globalPriceGroupKey = Object.keys(globalPriceGroup[colorID]);
    } else {
        for (var key in globalPriceGroup[colorID]) {
            globalPriceGroupKey.push(key);
        }
    }

    //globalPriceGroup[colorID].sort( function numOrdA(a, b){ return (a-b); } );
    globalPriceGroupKey.sort(function(a, b) {
        return globalPriceGroup[colorID][a] - globalPriceGroup[colorID][b];
    });
}
Run Code Online (Sandbox Code Playgroud)

我有什么办法可以使该代码与ie7 / 8兼容?

lon*_*day 5

是。这一点都不难。一个非常简单的垫片将如下所示:

if (!Object.keys) {
    Object.keys = function(obj) {
        var keys = [],
            key;

        for (key in obj) {
            if (obj.hasOwnProperty(key)) {
                keys.push(key);
            }
        }

        return keys;
    };
}
Run Code Online (Sandbox Code Playgroud)

MDN列出了更好的版本,该版本通常提供有用的填充。