在原生不支持的旧环境中添加兼容的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的无限级联下拉框js插件
Oct 29 Javascript
onbeforeunload与onunload事件异同点总结
Jun 24 Javascript
Bootstrap按钮组件详解
Apr 26 Javascript
jQuery获取当前点击的对象元素(实现代码)
May 19 Javascript
jQuery实现发送验证码并60秒倒计时功能
Nov 25 Javascript
详解用函数式编程对JavaScript进行断舍离
Sep 18 Javascript
p5.js入门教程之键盘交互
Mar 19 Javascript
vue中关闭eslint的方法分析
Aug 04 Javascript
在Create React App中使用CSS Modules的方法示例
Jan 15 Javascript
Vue中使用canvas方法总结
Feb 12 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
Oct 15 Javascript
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
Sep 04 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数据库信息代码
2009/03/12 PHP
PHP日期处理函数 整型日期格式
2011/01/12 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
XENON基于JSON变种
2010/07/27 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
Python Tkinter实现简易计算器功能
2018/01/30 Python
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
在python 中实现运行多条shell命令
2019/01/07 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
Python爬虫运用正则表达式的方法和优缺点
2019/08/25 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
python中reload重载实例用法
2020/12/15 Python
印尼购物网站:iLOTTE
2019/10/16 全球购物
你所在的项目是如何确定版本号的
2015/12/28 面试题
考博专家推荐信模板
2013/12/02 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
单位婚育证明范本
2014/11/21 职场文书
领导工作表现评语
2015/01/04 职场文书
材料员岗位职责
2015/02/10 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
教你怎么用python selenium实现自动化测试
2021/05/27 Python
nginx服务器的下载安装与使用详解
2021/08/02 Servers