JavaScript1.8.5新特性系列Object.keys

本文介绍了JavaScript1.8.5版本中引入的原生Object.keys API,包括其基本用法、兼容性写法以及浏览器支持情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前在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; 
          }
    })
}

 

浏览器支持情况

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值