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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM