在原生不支持的旧环境中添加兼容的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 相关文章推荐
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
Mar 07 Javascript
深入document.write()与HTML4.01的非成对标签的详解
May 08 Javascript
javascript模拟map输出与去除重复项的方法
Feb 09 Javascript
jQuery实现表格颜色交替显示的方法
Mar 09 Javascript
Jquery基础之事件操作详解
Jun 14 Javascript
聊一聊Vue.js过渡效果
Sep 07 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
JavaScript的六种继承方式(推荐)
Jun 26 Javascript
JS原型继承四步曲及原型继承图一览
Nov 28 Javascript
vue移动端项目缓存问题实践记录
Oct 29 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 jQuery
详解vue组件之间的通信
Aug 30 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 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
jQuery制作拼图小游戏
2015/01/12 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
Python下载懒人图库JavaScript特效
2015/05/28 Python
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
应届生.NET方向面试题
2015/05/23 面试题
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
服装设计专业求职信
2014/06/16 职场文书
政府个人对照检查材料
2014/08/28 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
复试通知单模板
2015/04/24 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
python关于集合的知识案例详解
2021/05/30 Python
html实现弹窗的实例
2021/06/09 HTML / CSS
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android
Python图像处理库PIL详细使用说明
2022/04/06 Python
JS class语法糖的深入剖析
2022/07/07 Javascript