在原生不支持的旧环境中添加兼容的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 相关文章推荐
extjs fckeditor集成代码
May 10 Javascript
分享几个超级震憾的图片特效
Jan 08 Javascript
用原生JS获取CLASS对象(很简单实用)
Oct 15 Javascript
jQuery实现本地预览上传图片功能
Jan 08 Javascript
JS遍历页面所有对象属性及实现方法
Aug 01 Javascript
js实现弹窗暗层效果
Jan 16 Javascript
Flask中获取小程序Request数据的两种方法
May 12 Javascript
vue.js 使用axios实现下载功能的示例
Mar 05 Javascript
vue中使用echarts制作圆环图的实例代码
Jul 27 Javascript
Vue.js 利用v-for中的index值实现隔行变色
Aug 01 Javascript
详解vue挂载到dom上会发生什么
Jan 20 Javascript
node.js如何自定义实现一个EventEmitter
Jul 16 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
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
通过PHP修改Linux或Unix口令的方法分享
2012/01/30 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
php array_keys 返回数组的键名
2016/10/25 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
js实现图片360度旋转
2017/01/22 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
vue实现评论列表功能
2019/10/25 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python实现2014火车票查询代码分享
2014/01/10 Python
python登录豆瓣并发帖的方法
2015/07/08 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
小学校长先进事迹材料
2014/05/13 职场文书
刑事和解协议书范本
2014/11/19 职场文书
环保守法证明
2015/06/24 职场文书
搞笑婚庆主持词
2015/06/29 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书
实验心得体会范文
2016/01/25 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
Python 可迭代对象 iterable的具体使用
2021/08/07 Python