在 JavaScript 中获取对象的不可枚举继承属性名称
JavaScript 根据具体需求提供了多种访问对象属性的方法。然而,这些方法都不允许检索不可枚举的、非自己的属性。本文探讨了提取此类属性的替代方法。
解决方案:利用 getOwnPropertyNames 和原型链
由于 Object.getOwnPropertyNames() 可以检索不可枚举属性,因此它可以与原型链遍历结合。以下 JavaScript 函数 getAllProperties() 迭代对象的原型链并编译其所有不可枚举、非自有属性的列表:
function getAllProperties(obj){<pre class="brush:php;toolbar:false">var allProps = [] , curr = obj do{ var props = Object.getOwnPropertyNames(curr) props.forEach(function(prop){ if (allProps.indexOf(prop) === -1) allProps.push(prop) }) }while(curr = Object.getPrototypeOf(curr)) return allProps
}
示例用法
演示 getAllProperties() 函数的功能,考虑以下数组对象:
console.log(getAllProperties([1,2,3]));
输出:
[ 'length' ]
输出列出了属于 Array.prototype 链的不可枚举属性 'length'。
以上是如何在 JavaScript 中检索不可枚举的继承属性名称?的详细内容。更多信息请关注PHP中文网其他相关文章!