Object
最新更新: 2019-08-22 17:14:34
阅读: 41次
IE浏览器不支持 Object.values 和 Object.keys,现另外实现 Object.values 、Object.keys支持IE(仅支持ie9及以上)
// Object.values Object.keys兼容IE if (!Object.values) Object.values = function(obj) { if (obj !== Object(obj)) throw new TypeError('Object.values called on a non-object'); var val=[],key; for (key in obj) { if (Object.prototype.hasOwnProperty.call(obj,key)) { val.push(obj[key]); } } return val; } if (!Object.keys) { Object.keys = (function () { var hasOwnProperty = Object.prototype.hasOwnProperty, hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'), dontEnums = [ 'toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor' ], dontEnumsLength = dontEnums.length; return function (obj) { if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object'); var result = []; for (var prop in obj) { if (hasOwnProperty.call(obj, prop)) result.push(prop); } if (hasDontEnumBug) { for (var i=0; i < dontEnumsLength; i++) { if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]); } } return result; } })() };