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()
返回对象的所有可枚举属性。
推荐阅读: