Javascript 如何在IE11中为jquery 3添加Object.values pollyfill?
我正在使用vue/vuetify,我正在尝试让它在IE11中工作。当我运行它时,我得到了这个错误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
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模式下运行还是什么?