在原生不支持的旧环境中添加兼容的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 常用函数库详解
Oct 21 Javascript
jquery 圆形旋转图片滚动切换效果
Jan 19 Javascript
jQuery之网页换肤实现代码
Apr 30 Javascript
使用node.js 获取客户端信息代码分享
Nov 26 Javascript
javascript中this的四种用法
May 11 Javascript
最全的Javascript编码规范(推荐)
Jun 22 Javascript
JS中的==运算: [''] == false —&gt;true
Jul 24 Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 Javascript
JS判断两个数组或对象是否相同的方法示例
Feb 28 Javascript
深入理解vue中的slot与slot-scope
Apr 22 Javascript
layer ui 导入文件之前传入数据的实例
Sep 23 Javascript
高性能js数组去重(12种方法,史上最全)
Dec 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以及MYSQL日期比较方法
2012/11/29 PHP
实例讲解php将字符串输出到HTML
2019/01/27 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
extJs 下拉框联动实现代码
2010/04/09 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
javascript执行上下文、变量对象实例分析
2020/04/25 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
关于Python 3中print函数的换行详解
2017/08/08 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
安装python及pycharm的教程图解
2019/10/10 Python
Numpy之reshape()使用详解
2019/12/26 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
QA工程师岗位职责
2013/11/20 职场文书
求职自荐信格式
2013/12/04 职场文书
应届本科生推荐信范文
2013/12/25 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
企业消防安全责任书
2014/07/23 职场文书
检讨书范文
2015/01/27 职场文书
小学总务工作总结
2015/08/13 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书