使用Object静态方法

课后整理 2020-12-20

静态方法是指部署在Object对象自身的方法。下面我们简单认识一下。

Object.keys()、Object.getOwnPropertyNames()

Object.keys方法和Object.getOwnPropertyNames方法都用来遍历对象的属性。 Object.keys方法的参数是一个对象,返回一个数组。该数组的成员都是该对象自身的(而不是继承的)所有属性名。例如: var obj = {   p1: 123,   p2: 456 }; Object.keys(obj) // ["p1", "p2"] Object.getOwnPropertyNames方法与Object.keys类似,也是接受一个对象作为参数,返回一个数组,包含了该对象自身的所有属性名。例如: var obj = {   p1: 123,   p2: 456 }; Object.getOwnPropertyNames(obj) // ["p1", "p2"]

注意,对于一般的对象来说,Object.keys()和Object.getOwnPropertyNames()返回的结果是一样的。只有涉及不可枚举属性时,才会有不一样的结果。Object.keys方法只返回可枚举的属性,Object.getOwnPropertyNames方法还返回不可枚举的属性名。例如:

var a = ['Hello', 'World'];
Object.keys(a) // ["0", "1"]
Object.getOwnPropertyNames(a) // ["0", "1",  "length"]

在上面代码中,数组的length属性是不可枚举的属性,所以只出现在Object.getOwnPropertyNames方法的返回结果中。

【示例】由于 JavaScript 没有提供计算对象属性个数的方法,所以可以用这两个方法代替。

var obj = {
  p1: 123,
  p2: 456
};
Object.keys(obj).length // 2
Object.getOwnPropertyNames(obj).length // 2

一般情况下,总是使用Object.keys方法,遍历数组的属性。

其他方法

除了上面提到的两个方法,Object还有不少其他静态方法,下面简单说明一下,后面章节会详细讲解。

(1)对象属性模型的相关方法

(2)控制对象状态的方法

(3)原型链相关方法