当前位置:首页 > JavaScript

Js实现allkeys

2026-04-06 23:40:26JavaScript

实现 allKeys 方法

在 JavaScript 中,allKeys 方法的目标是获取对象及其原型链上的所有可枚举属性。以下是一种实现方式:

function allKeys(obj) {
  const keys = [];
  for (const key in obj) {
    keys.push(key);
  }
  return keys;
}

排除原型链上的属性

如果只需要对象自身的属性(不包括原型链),可以使用 Object.getOwnPropertyNames

function ownKeys(obj) {
  return Object.getOwnPropertyNames(obj);
}

包括不可枚举属性

如果需要包含不可枚举的属性,可以结合 Object.getOwnPropertyNames 和递归遍历原型链:

function getAllKeys(obj) {
  let keys = [];
  let current = obj;
  while (current !== null && current !== Object.prototype) {
    keys = keys.concat(Object.getOwnPropertyNames(current));
    current = Object.getPrototypeOf(current);
  }
  return [...new Set(keys)];
}

使用 ES6 的 Reflect

ES6 提供了 Reflect.ownKeys 方法,可以获取对象自身的所有属性(包括不可枚举和 Symbol 属性):

Js实现allkeys

function reflectKeys(obj) {
  return Reflect.ownKeys(obj);
}

注意事项

  • 使用 for...in 会遍历原型链上的可枚举属性
  • Object.keys 只返回对象自身的可枚举属性
  • Object.getOwnPropertyNames 返回对象自身的所有属性(不包括 Symbol)
  • Reflect.ownKeys 是最全面的方法,包含所有自身属性

标签: Jsallkeys
分享给朋友:

相关文章

Js轮训实现

Js轮训实现

轮询的实现方法 轮询(Polling)是一种客户端定期向服务器发送请求以获取最新数据的技术。适用于实时性要求不高的场景,实现简单但可能增加服务器负载。 使用setInterval实现基础轮询 通过s…

Js实现allkeys

Js实现allkeys

实现 allKeys 方法 在 JavaScript 中,allKeys 方法通常用于获取对象的所有可枚举属性(包括原型链上的属性)。以下是几种实现方式: 使用 for...in 循环 通过…

怎么用Js实现图片移动

怎么用Js实现图片移动

使用CSS和JavaScript实现图片移动 通过修改图片的CSS属性(如left、top或transform)可以实现图片移动效果。以下是两种常见方法: 方法一:通过修改left和top属性 假设…

Js实现划词翻译

Js实现划词翻译

划词翻译的实现思路 划词翻译功能可以通过监听用户鼠标选中文本的事件,获取选中的文本内容,然后调用翻译API进行翻译,最后将翻译结果显示在页面上。 获取选中文本 通过window.getSelecti…

Js实现reset

Js实现reset

重置表单元素 在JavaScript中重置表单可以通过调用表单元素的reset()方法实现。该方法会将所有表单控件恢复到初始值。 document.getElementById('myForm').…

Js实现const

Js实现const

在JavaScript中,const是用于声明常量的关键字,其特点如下: const的基本特性 声明时必须初始化,否则会抛出语法错误 不能重复声明同名变量 块级作用域(与let相同) 不允许重复赋值…