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 @ 2019-03-21 11:24  jser_dimple  阅读(589)  评论(5编辑  收藏  举报
/*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();*/