65 lines
1.9 KiB
Markdown
65 lines
1.9 KiB
Markdown
![]() |
---
|
||
|
title: Object Keys
|
||
|
localeTitle: 对象键
|
||
|
---
|
||
|
`Object.keys()`方法返回给定对象自己的可枚举属性的数组,其顺序与`for...in`循环提供的顺序相同(不同之处在于`for-in`循环枚举原型链中的属性为好)。
|
||
|
|
||
|
## 句法
|
||
|
```
|
||
|
Object.keys(obj)
|
||
|
```
|
||
|
|
||
|
### 参数
|
||
|
|
||
|
**OBJ**
|
||
|
|
||
|
要返回其可枚举自身属性的对象。
|
||
|
|
||
|
[MDN链接](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) | [MSDN链接](https://msdn.microsoft.com/en-us/LIBRary/ff688127%28v=vs.94%29.aspx)
|
||
|
|
||
|
## 描述
|
||
|
|
||
|
`Object.keys()`返回一个数组,其元素是与直接在对象上找到的可枚举属性相对应的字符串。属性的顺序与通过手动循环对象的属性给出的顺序相同。
|
||
|
|
||
|
## 例子
|
||
|
```
|
||
|
var arr = ['a', 'b', 'c'];
|
||
|
console.log(Object.keys(arr)); // console: ['0', '1', '2']
|
||
|
|
||
|
// array like object
|
||
|
var obj = { 0: 'a', 1: 'b', 2: 'c' };
|
||
|
console.log(Object.keys(obj)); // console: ['0', '1', '2']
|
||
|
|
||
|
// array like object with random key ordering
|
||
|
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
|
||
|
console.log(Object.keys(an_obj)); // console: ['2', '7', '100']
|
||
|
|
||
|
// getFoo is property which isn't enumerable
|
||
|
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
|
||
|
my_obj.foo = 1;
|
||
|
|
||
|
console.log(Object.keys(my_obj)); // console: ['foo']
|
||
|
|
||
|
// Create a constructor function.
|
||
|
function Pasta(grain, width, shape) {
|
||
|
this.grain = grain;
|
||
|
this.width = width;
|
||
|
this.shape = shape;
|
||
|
|
||
|
// Define a method.
|
||
|
this.toString = function () {
|
||
|
return (this.grain + ", " + this.width + ", " + this.shape);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Create an object.
|
||
|
var spaghetti = new Pasta("wheat", 0.2, "circle");
|
||
|
|
||
|
// Put the enumerable properties and methods of the object in an array.
|
||
|
var arr = Object.keys(spaghetti);
|
||
|
document.write (arr);
|
||
|
|
||
|
// Output:
|
||
|
// grain,width,shape,toString
|
||
|
|
||
|
```
|