在原生不支持的旧环境中添加兼容的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实现的检测浏览器和系统的函数
Apr 09 Javascript
JS面向对象编程 for Cookie
Sep 19 Javascript
js将控件隐藏及display属性的使用介绍
Dec 30 Javascript
JavaScript制作的可折叠弹出式菜单示例
Apr 04 Javascript
avalonjs实现仿微博的图片拖动特效
May 06 Javascript
js实现拖拽效果(构造函数)
Dec 14 Javascript
js解决movebox移动问题
Mar 29 Javascript
bootstrap fileinput 上传插件的基础使用
Feb 17 Javascript
ReactJs设置css样式的方法
Jun 08 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
Sep 27 Javascript
node+multer实现图片上传的示例代码
Feb 18 Javascript
jQuery+ajax实现文件上传功能
Dec 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
2016/01/08 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
通过javascript设置css属性的代码
2009/12/28 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
js文字横向滚动特效
2015/11/11 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
Vue实现一个图片懒加载插件
2019/03/11 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
Win10下Python环境搭建与配置教程
2016/11/18 Python
用python实现百度翻译的示例代码
2018/03/09 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
如何在django中实现分页功能
2020/04/22 Python
python绘制汉诺塔
2021/03/01 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
国际商务专业学生个人的自我评价
2013/09/28 职场文书
英文简历中的自我评价用语
2013/12/09 职场文书
公证委托书
2014/08/01 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
学生检讨书如何写
2014/10/30 职场文书
医生辞职信范文
2015/03/02 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL