以前在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; 
          }
    })
}
浏览器支持情况:










