欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在原生不支持的旧环境中添加兼容的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实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。