在原生不支持的旧环境中添加兼容的Object.keys实现方法

如下所示:

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实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 在原生不支持的旧环境中添加兼容的Object.keys实现方法

    如下所示: if (!Object.keys) { Object.keys = (function () { var hasOwnProperty = Object.prototype.hasOwnProperty, //原型上的方法,只取自身有的属性: hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'), //ie6一下,!之后的内容为false; dontEnums = [ 'toString', 'to

  • 在PyCharm环境中使用Jupyter Notebook的两种方法总结

    方法一: 1.安装Jupyter Notebook pip install jupyter 2.在PyCharm中新建Jupyter Notebook文件 步骤:File->New...->Jupyter Notebook->输入文件名 建好之后效果如下图所示,就是熟悉的Jupyter Notebook界面: 3.运行 输入代码,点击绿色小三角运行代码. 方法二: 1.安装Jupyter Notebook pip install jupyter 2.打开Python Console 打开

  • Python字符串中添加、插入特定字符的方法

    分析 我们将添加.插入.删除定义为: 添加 : 在字符串的后面或者前面添加字符或者字符串 插入 : 在字符串之间插入特定字符 在Python中,字符串是不可变的.所以无法直接删除.插入字符串之间的特定字符. 所以想对字符串中字符进行操作的时候,需要将字符串转变为列表,列表是可变的,这样就可以实现对字符串中特定字符的操作. 1.添加字符实现 添加字符或字符串 如果想在字符串 土堆 后面或者前面添加 碎念 字符串. 可以使用 + 号实现字符串的连接,或者使用方法 .join() 来连接字符串. .j

  • element-ui 的el-button组件中添加自定义颜色和图标的实现方法

    我使用的element-ui的版本是V1.4.13. 如上图所示,如果使用el-button,加颜色是可以通过设置type属性的值,加图标就设置icon属性的值. 现在产品给了一个需求,就是自定义的很多种类别,不同的类别的按钮显示不同的颜色和图标.如下图所示: 为了方便开发,目前的解决方案是:添加一个自定义全局指令,同时在element-ui源码中,加入对应的组件.开发人员在开发时只要在type中添加不同的类的值,就能添加上颜色和图标. 1.在element-ui的button源码中加了自定义指

  • Spring MVC环境中文件上传功能的实现方法详解

    前言 我们在实际开发过程中,尤其是web项目开发,文件上传和下载的需求的功能非常场景,比如说用户头像.商品图片.邮件附件等等.其实文件上传下载的本质都是通过流的形式进行读写操作,而在开发中不同的框架都会对文件上传和下载有或多或少的封装,这里就以Spring MVC环境中文件的上传为例,讲解Spirng MVC环境下的文件上传功能实现.下面话不多说了,来一起看看详细的介绍吧. 一.客户端编程 由于多数文件上传都是通过表单形式提交给后台服务器的,因此,要实现文件上传功能,就需要提供一个文件上传的表单

  • Java在PowerPoint中添加上标和下标的实现方法

    目录 前言 程序环境配置 安装Spire.Presentation for Java 添加上标和下标 代码实现 前言 当我们在演示文稿中添加商标.版权或其他符号时,我们可能希望该符号出现在某个文本的上方或下方.在Microsoft PowerPoint中,我们可以通过对符号应用上标或下标格式来实现这种效果.在这篇文章中,我们将演示如何在Java中使用Spire.Presentation for Java以编程的方式实现这一任务. 程序环境配置 安装Spire.Presentation for J

  • vue 组件中添加样式不生效的解决方法

    如何产生 在开发项目中遇到在组件中添加样式不生效的情况.具体场景如下 //// vue 组件 <template> <div class="box" data-v-33f8ed40></div> <template> //我用js在上面div标签中插入一个<p class='text'>text goes here</p> <script> export default { ... mounted(){

  • Ubuntu中添加应用程序快速启动器的方法

    一些应用程序(例如很多.sh程序)如果想在Ubuntu中添加到Dash home中进行快速的启动,则需要找到/usr/share/applications这个目录,其中存放的全部是dash中的启动器,将你需要的程序xxx添加其中即可.具体操作步骤为: 命令行操作内容: cd /usr/share/applications sudo gedit xxx.desktop 打开需要编辑的文本内容为: [Desktop Entry] Version=1.0 Name=xxx Exec=/home/use

  • windows环境中mysql忘记root密码的解决方法详解

    一朋友告急:mysql 忘记root密码了 让我帮忙给看看,因为没有接触过mysql 所以从网上找了一下信息经我亲身实践  已经成功!mysql版本是5.1.以下是从网上找的mysql密码修改的信息:参考文章:windows下重置Mysql Root密码的方法mysql修改密码以及忘记密码1. 首先检查mysql服务是否启动,若已启动则先将其停止服务,可在开始菜单的运行,使用命令:net stop mysql 打开第一个cmd1窗口,切换到mysql的bin目录,运行命令:mysqld --de

  • win2003 vps IIS6中添加站点并绑定域名的配置方法

    本设置过程操作系统为中文版本的Windows 2003 Enterprise Server. 1.  在IIS网站中右击新 建-网站 2.  点击-下一步 3.   为网站命名,此处是网站的描述方便区分不同站点,如: 4.   选择网站IP(通常不用改变),端口为80,如果有需要可以更改为其他端口但访问时网页地址将变成http://mail.XXX.com:端口(修改的端口) 网站主机头请填写你的网站访问时要用的网址:比如你要用mail.XXX.com访问则此处就是mail.XXX.com 5.

随机推荐