JavaScript Object.getOwnPropertyNames() 方法

Object.getOwnPropertyNames() 语法

Object.getOwnPropertyNames() 是 JavaScript 的一个静态方法,它会以 “数组” 的形式来返回自身的所有属性名(不包括继承过来的属性)。

语法:

Object.getOwnPropertyNames(obj)

说明:

Object.getOwnPropertyNames() 方法接收单个参数。

  • obj(必选):是一个对象名。

对于 Object.getOwnPropertyNames() 方法,小伙伴们要清楚以下几点。

  • 像数组等本质上也是对象,因此我们也可以使用 Object.getOwnPropertyNames() 来操作它们。
  • Object.getOwnPropertyNames() 只会返回自身属性,不包括原型链上的继承属性。如果你需要获取所有可枚举的属性(包括继承的),请使用 for...in 循环。
  • Object.getOwnPropertyNames() 返回的属性名包括 “可枚举” 和 “不可枚举” 的属性。
  • Object.getOwnPropertyNames() 不返回 Symbol 类型的属性名。如果你想要获取 Symbol 属性,应该使用 Object.getOwnPropertySymbols()

注意: getOwnPropertyNames() 是一个静态方法,它只能被类名(即 Object)调用,而不能被实例调用。

Object.getOwnPropertyNames() 摘要

属于 JavaScript Object 对象
使用频率
官方文档 查看
MDN 查看

Object.getOwnPropertyNames() 示例

接下来,我们通过几个简单的例子来讲解一下 Object.getOwnPropertyNames() 方法是如何使用的。

示例 1:Object.getOwnPropertyNames() 基本用法

function ParentBox() {
    this.color = "red";
}
function ChildBox() {
    this.width = 20;
    this.height = 40;
}
ChildBox.prototype = new ParentBox();
const box = new ChildBox();

const result = Object.getOwnPropertyNames(box);
console.log(result);

运行结果如下。

[ 'width', 'height' ]

分析:

从结果可以看到,Object.getOwnPropertyNames() 方法只会返回对象自身的属性("width"、"height"),而不会包含继承过来的属性("color")。

示例 2:对数组使用 Object.getOwnPropertyNames()

const arr = ["红", "绿", "蓝"];
const result = Object.getOwnPropertyNames(arr);
console.log(result);

运行结果如下。

[ '0', '1', '2', 'length' ]

分析:

对于数组来说,它的属性包括下标以及 length。

示例 3:对带不可枚举属性的对象使用 Object.getOwnPropertyNames()

const obj = {
    name: "Jack",
    age: 20
};
Object.defineProperty(obj, "sex", {
    value: "male",
    enumerable: false
});

console.log(Object.keys(obj));
console.log(Object.getOwnPropertyNames(obj));

运行结果如下。

[ 'name', 'age' ]
[ 'name', 'age', 'sex' ]

分析:

Object.keys() 方法只能获取可枚举属性,而 Object.getOwnPropertyNames() 可以获取对象所有属性(包括不可枚举属性)。

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号