在原生不支持的旧环境中添加兼容的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 相关文章推荐
文字幻灯片
Jun 26 Javascript
让人期待的2011年度最佳 jQuery 插件分享
Mar 16 Javascript
基于jquery的simpleValidate简易验证插件
Jan 31 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
Nov 25 Javascript
学习vue.js中class与style绑定
Dec 03 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
Mar 04 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
Mar 29 Javascript
使用NestJS开发Node.js应用的方法
Dec 03 Javascript
详解VSCode配置启动Vue项目
May 14 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
Aug 29 Javascript
JS通过识别id、value值对checkbox设置选中状态
Feb 19 Javascript
关于Js中new操作符的作用详解
Feb 21 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图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
JQuery 写的个性导航菜单
2009/12/24 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
javascript显示系统当前时间代码
2016/12/29 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
django 自定义用户user模型的三种方法
2014/11/18 Python
python自定义解析简单xml格式文件的方法
2015/05/11 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
2019/04/02 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
在python3中实现查找数组中最接近与某值的元素操作
2020/02/29 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
物业管理求职自荐信
2013/09/25 职场文书
行政部主管岗位职责
2013/12/28 职场文书
11月红领巾广播稿
2014/01/17 职场文书
《阳光》教学反思
2014/02/23 职场文书
教师自我鉴定范文
2014/03/20 职场文书
党风廉政建设责任书
2014/04/14 职场文书
爱心捐书活动总结
2014/07/05 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
2014年电教工作总结
2014/12/19 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
Java详细解析==和equals的区别
2022/04/07 Java/Android