Object.keys()

速记:Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 。
练习小demo

var arr=['a','b','c'];
console.log(Object.keys(arr));

var obj={0:'a',1:'b',2:'c'};
console.log(Object.keys(obj));


var anObj={100:'a',2:'b',7:'c'};
console.log(Object.keys(anObj));

var myObj=Object.create({},{
	getFoo:{
		value:function(){return this.foo}
	}
});
myObj.foo=1;
console.log(Object.keys(myObj));


要在原生不支持的旧环境中添加兼容的Object.keys,请复制以下代码段

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

本文看自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

posted @   jser_dimple  阅读(591)  评论(5编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
/*function gotourl() { var url = "https://www.cnblogs.com/smart-girl/"; var localurl = document.url; if( localurl.substring(0,url.length) != url ) { location.href=url; } } gotourl();*/
点击右上角即可分享
微信分享提示