75 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: Object getOwnPropertyNames
							 | 
						|||
| 
								 | 
							
								localeTitle: Object getOwnPropertyNames
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								`Object.getOwnPropertyNames()`方法返回直接在给定对象上找到的所有属性(可枚举或不可枚举`Object.getOwnPropertyNames()`的数组。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 句法
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								Object.getOwnPropertyNames(obj) 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 参数
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								**OBJ**
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								将返回其可枚举_和不可枚举的_自身属性的对象。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								[MDN链接](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames) | [MSDN链接](https://msdn.microsoft.com/en-us/LIBRary/ff688126%28v=vs.94%29.aspx)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 描述
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								`Object.getOwnPropertyNames()`返回一个数组,其元素是与直接在对象上找到的可枚举_和不可枚举_属性相对应的字符串。数组中可枚举属性的排序与`for...in`循环(或`Object.keys()` )在对象属性上公开的顺序一致。未定义数组中以及可枚举属性中的非可枚举属性的顺序。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 例子
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								var arr = ['a', 'b', 'c']; 
							 | 
						|||
| 
								 | 
							
								 console.log(Object.getOwnPropertyNames(arr).sort()); // logs '0,1,2,length' 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 // Array-like object 
							 | 
						|||
| 
								 | 
							
								 var obj = { 0: 'a', 1: 'b', 2: 'c' }; 
							 | 
						|||
| 
								 | 
							
								 console.log(Object.getOwnPropertyNames(obj).sort()); // logs '0,1,2' 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 // Logging property names and values using Array.forEach 
							 | 
						|||
| 
								 | 
							
								 Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) { 
							 | 
						|||
| 
								 | 
							
								  console.log(val + ' -> ' + obj[val]); 
							 | 
						|||
| 
								 | 
							
								 }); 
							 | 
						|||
| 
								 | 
							
								 // logs 
							 | 
						|||
| 
								 | 
							
								 // 0 -> a 
							 | 
						|||
| 
								 | 
							
								 // 1 -> b 
							 | 
						|||
| 
								 | 
							
								 // 2 -> c 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 // non-enumerable property 
							 | 
						|||
| 
								 | 
							
								 var my_obj = Object.create({}, { 
							 | 
						|||
| 
								 | 
							
								  getFoo: { 
							 | 
						|||
| 
								 | 
							
								    value: function() { return this.foo; }, 
							 | 
						|||
| 
								 | 
							
								    enumerable: false 
							 | 
						|||
| 
								 | 
							
								  } 
							 | 
						|||
| 
								 | 
							
								 }); 
							 | 
						|||
| 
								 | 
							
								 my_obj.foo = 1; 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 console.log(Object.getOwnPropertyNames(my_obj).sort()); // logs 'foo,getFoo' 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 function Pasta(grain, size, shape) { 
							 | 
						|||
| 
								 | 
							
								    this.grain = grain; 
							 | 
						|||
| 
								 | 
							
								    this.size = size; 
							 | 
						|||
| 
								 | 
							
								    this.shape = shape; 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 var spaghetti = new Pasta("wheat", 2, "circle"); 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 var names = Object.getOwnPropertyNames(spaghetti).filter(CheckKey); 
							 | 
						|||
| 
								 | 
							
								 document.write(names); 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 // Check whether the first character of a string is 's'. 
							 | 
						|||
| 
								 | 
							
								 function CheckKey(value) { 
							 | 
						|||
| 
								 | 
							
								    var firstChar = value.substr(0, 1); 
							 | 
						|||
| 
								 | 
							
								    if (firstChar.toLowerCase() == 's') 
							 | 
						|||
| 
								 | 
							
								        return true; 
							 | 
						|||
| 
								 | 
							
								    else 
							 | 
						|||
| 
								 | 
							
								         return false; 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								 // Output: 
							 | 
						|||
| 
								 | 
							
								 // size,shape 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```
							 |