Javascript 如何在IE11中为jquery 3添加Object.values pollyfill?

Javascript 如何在IE11中为jquery 3添加Object.values pollyfill?,javascript,jquery,Javascript,Jquery,我正在使用vue/vuetify,我正在尝试让它在IE11中工作。当我运行它时,我得到了这个错误 TypeError: Object doesn't support property or method 'values' 但是当我加上一个pollyfill if (!Object.values) { Object.prototype.values = function (obj) { return Object.keys(obj).map(fun

我正在使用vue/vuetify,我正在尝试让它在IE11中工作。当我运行它时,我得到了这个错误

TypeError: Object doesn't support property or method 'values'
但是当我加上一个pollyfill

    if (!Object.values) {
        Object.prototype.values = function (obj) {
            return Object.keys(obj).map(function (e) {
                return obj[e];
            });
        };
    }
我从jQuery3.4.0中得到了这个

Object.keys: argument is not an Object
因为它最终调用上述函数,但不向其传递任何参数。从这里

    add = function( key, valueOrFunction ) {

        // If value is a function, invoke it and use its return value
        var value = isFunction( valueOrFunction ) ?
            valueOrFunction() :
            valueOrFunction;

        s[ s.length ] = encodeURIComponent( key ) + "=" +
            encodeURIComponent( value == null ? "" : value );
    };
它叫

valueOrFunction() // which is the Object.values()
这是一个jsfiddle

在IE11中打开,并查看控制台选项卡。我明白了

Object.keys: argument is not an Object
由于调用函数时不传递参数,因此在pollyfill中,
obj
变得未定义


由于某种原因,您正在分配给
对象.prototype.values
。您应该指定给
对象。值应改为

Object.values = function (obj) {
//    ^ no .prototype
    return Object.keys(obj).map(function (e) {
        return obj[e];
    });
};

jQuery代码中断,因为您向Object.prototype添加了一个属性,但没有。

可能的重复。请注意,虽然重复的答案使用与您类似的代码,但有许多答案没有;你应该试试这些。我添加了一个JSFIDLE。我使用了接受答案中的代码,但问题是jquery正在调用它,但没有传递任何参数。from(包括IE9+):“上述浏览器中jquery的任何问题都应报告为jquery中的错误。”浏览器是在IE8模式下运行还是什么?