跳到主要内容

JavaScript 对象的 Object.getOwnPropertyNames() 方法详解

Object.getOwnPropertyNames()方法返回给定对象中所有属性的数组。

示例

const obj = {
name: "Alexander",
age: 32,
address: "Macedonia",
};

// 查找obj中存在的属性
const propertyNames = Object.getOwnPropertyNames(obj);

console.log(propertyNames);

// 输出: [ 'name', 'age', 'address' ]

getOwnPropertyNames()语法

getOwnPropertyNames()方法的语法是:

Object.getOwnPropertyNames(obj);

这里,getOwnPropertyNames()是一个静态方法。因此,我们需要使用类名Object来访问这个方法。

getOwnPropertyNames()参数

getOwnPropertyNames()方法接受:

  • obj - 需要返回其属性的对象。

getOwnPropertyNames()返回值

getOwnPropertyNames()方法返回一个字符串数组,对应于给定对象中的属性。

示例1:JavaScript对象Object.getOwnPropertyNames()

// 创建一个对象
const obj = {
name: "Jack",
address: "London",
age: 22,
};

// 返回obj的属性数组
let objProperties = Object.getOwnPropertyNames(obj);

console.log(objProperties);
// 输出: [ 'name', 'address', 'age' ]

在上述示例中,我们使用了getOwnPropertyNames()方法与obj对象,返回了包括所有属性名或键的数组。

结果存储在objProperties对象中,当输出到控制台时显示指定的数组。

示例2:使用类数组对象的getOwnPropertyNames()

// 类数组对象
let obj = { 75: "A", 67: "C", 66: "B" };

// 获取obj的属性名
console.log(Object.getOwnPropertyNames(obj));

// 输出: [ '66', '67', '75' ]

在上述示例中,我们创建了一个类数组对象obj,其键是随机整数。

当与obj一起使用时,getOwnPropertyNames()方法返回一个升序排列的数字字符串数组。

示例3:使用数组的getOwnPropertyNames()

// 创建一个数组
let arr = ["a", "b", "c"];

// 获取arr的属性名
console.log(Object.getOwnPropertyNames(arr));

// 输出: [ '0', '1', '2', 'length' ]

在上述示例中,我们使用名为arr的数组与getOwnPropertyNames()方法来找到数组中的属性。

输出包括数组的索引和length属性。length属性是JavaScript中数组的内置属性,返回数组中元素的数量。

示例4:使用不可枚举属性的getOwnPropertyNames()

// 创建一个对象
const obj = {
name: "Jack",
address: "London",
age: 22,
};

// 定义键girlFriend,并
// 设置enumerable为false
Object.defineProperty(obj, "girlFriend", {
value: "Jessica",
enumerable: false,
});

// 打印可枚举和不可枚举的键
console.log(Object.getOwnPropertyNames(obj));

// 输出: [ 'name', 'address', 'age', 'girlFriend' ]

// 打印obj的可枚举键
console.log(Object.keys(obj));

// 输出: [ 'name', 'address', 'age' ]

在上述示例中,我们首先创建了一个具有一些初始属性的对象obj。

然后我们使用defineProperty()方法添加了girlFriend属性,并将enumerable配置为false

从输出中可以看出,Object.getOwnPropertyNames()方法返回obj的可枚举和不可枚举属性。

另一方面,Object.keys()方法仅返回可枚举属性。

记住: Object.getOwnPropertyNames()返回对象的所有可枚举和不可枚举属性,而Object.keys()返回对象的所有可枚举属性。

推荐阅读: