在原生不支持的旧环境中添加兼容的Object.keys实现方法
程序员文章站
2022-05-14 19:04:32
如下所示:
if (!object.keys) {
object.keys = (function () {
var hasownproperty =...
如下所示:
if (!object.keys) { object.keys = (function () { var hasownproperty = object.prototype.hasownproperty, //原型上的方法,只取自身有的属性; hasdontenumbug = !({tostring: null}).propertyisenumerable('tostring'), //ie6一下,!之后的内容为false; 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; } })() };
以上这篇在原生不支持的旧环境中添加兼容的object.keys实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。