在原生不支持的旧环境中添加兼容的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 相关文章推荐
如何实现浏览器上的右键菜单
Jul 10 Javascript
jQuery textarea的长度进行验证
May 06 Javascript
jQuery.fn和jQuery.prototype区别介绍
Oct 05 Javascript
JS文本获得焦点清除文本文字的示例代码
Jan 13 Javascript
AspNet中使用JQuery上传插件Uploadify详解
May 20 Javascript
深入理解js promise chain
May 05 Javascript
Javascript之Math对象详解
Jun 07 Javascript
详解vue-cli之webpack3构建全面提速优化
Dec 25 Javascript
Vue中在新窗口打开页面及Vue-router的使用
Jun 13 Javascript
Vue自定义指令封装节流函数的方法示例
Jul 09 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
Aug 30 Javascript
微信小程序实现购物车功能
Nov 18 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下使用以下代码连接并测试
2008/04/09 PHP
thinkphp普通查询与表达式查询实例分析
2014/11/24 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
为javascript添加String.Format方法
2020/08/11 Javascript
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
js的2种继承方式详解
2014/03/04 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
AngularJS单选框及多选框实现双向动态绑定
2016/01/13 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
用Python编写简单的微博爬虫
2016/03/04 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
会计岗位描述
2014/02/22 职场文书
幼教求职信
2014/03/12 职场文书
专业技术职务聘任书
2014/03/29 职场文书
个人承诺书格式
2014/06/03 职场文书
会计专业求职信
2014/08/10 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书