当前位置: 首页 > 编程笔记 >

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

松英喆
2023-03-14
本文向大家介绍在原生不支持的旧环境中添加兼容的Object.keys实现方法,包括了在原生不支持的旧环境中添加兼容的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实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • phpGrace 对 php 环境要求如下 : apache/nginx + php 5.3 + ( 使用命名空间 ) apache/nginx + php 7.0 + 是的我们“嫌弃”且不支持 IIS + PHP ! ^_^ php 扩展要求 1、pdo 2、mbstring 3、gd 4、curl 5、其他扩展见对应工具类的使用说明 伪静态支持说明 phpGrace 需要 web 服务器的伪静

  • 我已经从这个站点编译了一些AES实现代码,它应该执行128位密钥加密。我测试了可以正常工作的加密/解密程序。 然而,如果我用上面提到的代码加密任何东西,然后尝试用linux内置的openssl工具解密,我就是无法解密它,它甚至会记录错误的幻数错误。同样,如果我用openssl加密任何东西,并尝试用代码解密,那么就不会起作用。我试过两个cbc欧洲央行。 如果他们都在实施AES,它不应该以同样的方式工

  • 本文向大家介绍vue.js 添加 fastclick的支持方法,包括了vue.js 添加 fastclick的支持方法的使用技巧和注意事项,需要的朋友参考一下 fastclick:处理移动端click事件300毫秒延迟 1、兼容性 iOS 3及更高版本的移动Safari iOS 5及更高版本的Chrome Android上的Chrome(ICS) Opera Mobile 11.5及以上版本 An

  • 2)React VR构建在React原生框架上。这是否意味着React VR可以用来实现我的目标(AR导航)? 3)有人能分享他们在React Native和AR中的经验吗?然后我就有了一个清晰的开始方法。

  • 问题内容: 我正在尝试建立一个实现和的类。这两个接口都定义了方法,但是返回类型不同: K的类型擦除导致这两个方法签名冲突。我不能拥有它们中的一个,因为它是一个无效的覆盖,并且我不能拥有两个,因为它们具有相同的签名。有什么方法可以使这两个接口共存? 问题答案: 我认为在这种特殊情况下是不可能的。如果两个类都返回了对象类型,那么您将有机会,但是由于您混合了基本类型和对象类型,因此没有兼容的类型同时支持

  • 目标 建立一个lesson3项目,解决上一节lesson2遗留下来的—即开发环境打包到生产环境的问题。 知识点 1、process.env.NODE_ENV:node运行环境变量。 课程内容 process.env.NODE_ENV是node运行时的全局变量,node服务端中的任一js文件中都可以拿到它的值,先来试试是否真的能获取到值 先新建一个lesson3的项目,再创建一个test.js文件