JavaScript

超轻量级php框架startmvc

在原生不支持的旧环境中添加兼容的Object.keys实现方法

更新时间:2020-06-03 19:06:01 作者:startmvc
如下所示:if(!Object.keys){Object.keys=(function(){varhasOwnProperty=Object.prototype.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实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

添加兼容的object.keys