在原生不支持的旧环境中添加兼容的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 相关文章推荐
让FireFox支持innerText的实现代码
Dec 01 Javascript
Dom操作之兼容技巧分享
Sep 20 Javascript
jQuery实现垂直半透明手风琴特效代码分享
Aug 21 Javascript
纯JS代码实现一键分享功能
Apr 20 Javascript
浅析JavaScript函数的调用模式
Aug 10 Javascript
js html css实现复选框全选与反选
Oct 09 Javascript
webpack3+React 的配置全解
Aug 21 Javascript
Vue.js在数组中插入重复数据的实现代码
Nov 17 Javascript
js Element Traversal规范中的元素遍历方法
Apr 19 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
Oct 10 jQuery
微信小程序登录数据解密及状态维持实例详解
May 06 Javascript
Node.js实现断点续传
Jun 23 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
学习使用curl采集curl使用方法
2012/01/11 PHP
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
PHP编程实现脚本异步执行的方法
2017/08/09 PHP
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
通过location.replace禁止浏览器后退防止重复提交
2014/09/04 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
Jquery获取radio选中值实例总结
2019/01/17 jQuery
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
python的迭代器与生成器实例详解
2014/07/16 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
python实现决策树分类算法
2017/12/21 Python
eclipse创建python项目步骤详解
2019/05/10 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
幼师自我鉴定
2014/02/01 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
学历证明样本
2015/06/16 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
Python进程间的通信之语法学习
2022/04/11 Python
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS