在原生不支持的旧环境中添加兼容的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 相关文章推荐
JavaScript的eval JSON object问题
Nov 15 Javascript
jQueryMobile之Helloworld与页面切换的方法
Feb 04 Javascript
jQuery的基本概念与高级编程
May 14 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
Apr 01 Javascript
利用js判断手机是否安装某个app的多种方案
Feb 13 Javascript
angular.JS实现网页禁用调试、复制和剪切
Mar 31 Javascript
详解如何在vue中使用sass
Jun 21 Javascript
Angular.js中$resource高大上的数据交互详解
Jul 30 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
Jan 03 Javascript
微信小程序自定义prompt组件步骤详解
Jun 12 Javascript
通过实例了解js函数中参数的传递
Jun 15 Javascript
搭建vscode+vue环境的详细教程
Aug 31 Javascript
基于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 md5下16位和32位的实现代码
2008/04/09 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
js可突破windows弹退效果代码
2008/08/09 Javascript
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
介绍一下grep命令的使用
2012/06/28 面试题
服装厂厂长岗位职责
2013/12/27 职场文书
计算机专业职业规划
2014/02/28 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
庆祝教师节标语
2014/10/09 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
2015年企业工作总结范文
2015/04/28 职场文书
2015年管理人员工作总结
2015/05/13 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android