首页 > 编程语言 >JavaScript1.8.5新特性系列Object.keys

JavaScript1.8.5新特性系列Object.keys

时间:2023-06-26 10:05:38浏览次数:53  
标签:obj keys Object prop toString var JavaScript1.8


以前在js-object这个分类里面也写过keys相关的api

 

JavaScript1.8.5中,加入了原生的Object.keys这个api

 

 


Object.keys(obj);

/*简单举例*/
Object.keys({"A":"a","B":"b"});      //["A","B"]

兼容性写法

 

 

if(!Object.keys){
    Object.keys = (function(){
         var hasOwnPrototype = Object.prototype.hasOwnPrototype,
               hasDontEnumBug = !({toString:null}).propertyIsEnumerable('toString'),
          dontEnums = [
                 'toString',
                 'toLocalString',
                 '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; 
          }
    })
}

 

浏览器支持情况

 

标签:obj,keys,Object,prop,toString,var,JavaScript1.8
From: https://blog.51cto.com/u_16170312/6551651

相关文章

  • OLE(Object Linking and Embedding)是一种由Microsoft开发的技术,用于在Windows操作系统
    OLE(ObjectLinkingandEmbedding)是一种由Microsoft开发的技术,用于在Windows操作系统中实现对象链接和嵌入。它允许应用程序在同一文档或不同文档之间共享和操作对象的数据。使用OLE,应用程序可以将一个对象插入到另一个应用程序中,并且这个对象仍然保持其源应用程序中的特性和功能......
  • python: object 专有方法
     """StudentScoreInfo.py学生成绩类date2023-06-16edit:GeovinDu,geovindu,涂聚文ide:PyCharm2023.1python11"""importdatetimeimportsysimportosclassStudentScore(object):"""学生成绩类"&q......
  • org.springframework.boot.builder.SpringApplicationBuilder.init([LjavalangObject;
    一SpringBoot2.0.4集成SpringCloud异常:org.springframework.boot.builder.SpringApplicationBuilder.([Ljava/lang/Object;)V二、异常处理参考:缘起初学springcloud的朋友可能不知道,其实SpringBoot与SpringCloud需要版本对应,否则可能会造成很多意料之外的错误,比如eureka注册了......
  • Probabilistic and Geometric Depth: Detecting Objects in Perspective(1)
    作者认为单目3D目标检测可以简化为深度估计问题,深度估计不准确限制了检测的性能.已有的算法直接使用孤立实例或者像素估计深度,没有考虑目标之间的集合关系,因此提出了构建预测的目标之间的几何关系图,来促进深度预测.将深度值划分成若干个区间,然后通过分布的期望来计算深度值......
  • Objective C数组的内存管理
    在addObj后及时释放所添加的objectNSMutableArray*array=[NSMutableArraynew];NSString*str=[[NSStringalloc]initWithFormat:@"a"];[arrayaddObject:str];[strrelease];[arrayrelease];也就是说当你吧str放进array的时候,相当于创建了一个str的副本,而这个副本......
  • Objective C中NULL、Nil、nil、NSNull 的区别
    NULLValuesThesemacrosdefinenullvaluesforclassesandinstances.NULL可以用在C语言的各种指针上#define__DARWIN_NULL#define__DARWIN_NULLConstantsc特有的,例子:int*pointerToInt=NULL;char*pointerToChar=NULL;structTreeNode*roo......
  • Objective C 属性
    为每一个变量实现其访问器,繁琐,@property可以替我们减轻工作。 是否暴露读写接口readonly将只生成getter方法而不生成setter方法(getter方法没有get前缀)。readwrite默认属性,将生成不带额外参数的getter和setter方法(setter方法只有一个参数)。  线程安全atomic对于对象的......
  • node生成token报错:secretOrPrivateKey has a minimum key size of 2048 bits for RS25
    提要:在node生成token时利用用jsonwebtoken,利用非对称加密的生成token  constjwt=require("jsonwebtoken"); constprivateKey=fs.readFileSync("./keys/private.key");constpublicKey=fs.readFileSync("./keys/public.key");consttok......
  • iOS开发笔记 - Objective-C和JavaScript的混编
    最近看了一个对Github上面编程语言使用统计的排行榜,JavaScript真可以说是一枝独秀,很难想象20年前,这个语言只是浏览器中的装饰性语言,能做的事情也就是一点特效或者检查一下要提交给服务器的表单是否满足要求。今天的JavaScript已经是一个全栈语言,从客户端到服务器无所不在。很多编程......
  • 通用密钥,无需密码,在无密码元年实现Passkeys通用密钥登录(基于Django4.2/Python3.10)
    毋庸讳言,密码是极其伟大的发明,但拜病毒和黑客所赐,一旦密码泄露,我们就得绞尽脑汁再想另外一个密码,但记忆力并不是一个靠谱的东西,一旦遗忘密码,也会造成严重的后果,2023年业界巨头Google已经率先支持了Passkeys登录方式,只须在设备上利用PIN码解锁、指纹或面部辨识等生物识别方式,即可验......