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


Posted in Javascript onSeptember 11, 2017

如下所示:

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实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js实现控制内容的向上向下滚动效果
Jun 26 Javascript
JS检测图片大小的实例
Aug 21 Javascript
Javascript玩转继承(三)
May 08 Javascript
Javascript编写俄罗斯方块思路及实例
Jul 07 Javascript
AngularJS下对数组的对比分析
Aug 24 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
Sep 06 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
Sep 16 Javascript
AngularJS入门教程之过滤器用法示例
Nov 02 Javascript
jQuery Checkbox 全选 反选的简单实例
Nov 29 Javascript
微信小程序实现tab和swiper切换结合效果
Jul 17 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
Feb 18 Javascript
jquery实现抽奖功能
Oct 22 jQuery
基于bootstrop常用类总结(推荐)
Sep 11 #Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 #jQuery
利用纯js + transition动画实现移动端web轮播图详解
Sep 10 #Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
Sep 10 #Javascript
vue系列之动态路由详解【原创】
Sep 10 #Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
Sep 10 #Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
Sep 10 #Javascript
You might like
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
php解析xml方法实例详解
2015/05/12 PHP
php二维码生成
2015/10/19 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
Node.js与Sails redis组件的使用教程
2017/02/14 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
python实现逆波兰计算表达式实例详解
2015/05/06 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
浅谈Python 敏感词过滤的实现
2019/08/15 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
腾讯公司的一个sql题
2013/01/22 面试题
网络工程师专家职业发展路线
2014/02/14 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
信访工作个人总结
2015/03/03 职场文书
西柏坡观后感
2015/06/08 职场文书
看上去很美观后感
2015/06/10 职场文书
宝葫芦的秘密观后感
2015/06/11 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
2021/05/13 Python
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL
Vue实现动态查询规则生成组件
2021/05/27 Vue.js
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python