在原生不支持的旧环境中添加兼容的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 相关文章推荐
详解强大的jQuery选择器之基本选择器、层次选择器
Feb 07 Javascript
js数组的操作详解
Mar 27 Javascript
jQuery中get()方法用法实例
Dec 27 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
Mar 07 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
Apr 07 Javascript
jQuery学习笔记之回调函数
Aug 15 Javascript
在网页中插入百度地图的步骤详解
Dec 02 Javascript
JavaScript中String对象的方法介绍
Jan 04 Javascript
微信JSAPI支付操作需要注意的细节
Jan 10 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
Aug 24 jQuery
使用D3.js创建物流地图的示例代码
Jan 27 Javascript
Javascript实现动态时钟效果
Nov 17 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
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
php实现文章评论系统
2019/02/18 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
摘自启点的main.js
2008/04/20 Javascript
firefox插件Firebug的使用教程
2010/01/02 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
javascript正则表达式使用replace()替换手机号的方法
2015/01/19 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
Python中的闭包实例详解
2014/08/29 Python
Python SQLite3简介
2018/02/22 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
Python走楼梯问题解决方法示例
2018/07/25 Python
Python Socket编程之多线程聊天室
2018/07/28 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
python 实现视频 图像帧提取
2019/12/10 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
高中毕业生的个人自我评价
2014/02/21 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
本科毕业答辩开场白
2015/05/27 职场文书