JavaScript对象属性检测与获取方法详解

作者:青柠

时间:2026-10-23

浏览:235

本文详解JavaScript中检测与获取对象属性的多种方法。重点解析in运算符判断键名存在的原理及其对原型链属性的识别特性,说明for...in循环遍历可枚举属性及继承属性的机制。同时介绍利用hasOwnProperty过滤自身属性,以及ES5的Object.getOwnPropertyNames和ES6的Object.keys获取自身属性名列表的具体用法。

文章目录

JavaScript对象属性检测与获取方法详解

本文通过具体实例分析JavaScript中对象属性的检测与获取操作,供开发者参考。

1.1 in运算符

in运算符用于判断对象中是否存在指定的属性键名(注意区分键名与键值)。若存在则返回true,否则返回false。


var obj = { p: 1 }
'p' in obj // true
'toString' in obj // true

在示例代码中,对象obj包含属性p,因此使用in运算符返回true。然而,toString属性并未直接定义在obj上,in运算符依然返回true。这是因为in运算符无法区分对象自身的属性与继承自原型链的属性。由于toString继承自obj的原型对象,故检测结果为true。

1.2 for … in 循环

for … in 循环用于遍历对象的所有可枚举属性。


var obj = {a: 1, b: 2, c: 3};

for (var i in obj) {
 console.log(obj[i]);
}

使用for … in 循环时需注意以下两点:

  1. 该循环仅遍历对象所有可枚举的属性,自动跳过不可枚举的属性。
  2. 该循环不仅遍历对象自身的属性,还会遍历继承自原型链的属性。

若需仅获取对象自身的属性,需结合hasOwnProperty方法,在循环内部判断某个属性是否为对象自身的属性。


var person = { name: '老张' };

for (var key in person) {
 if (person.hasOwnProperty(key)) {
  console.log(key);
 }
}

获取对象自身属性还有另外两种方法:

ES5标准:

使用Object.getOwnPropertyNames(obj)获取包含所有自身属性(含不可枚举)的数组。


var person = { name: '老张' }
var props = Object.getOwnPropertyNames(person) 

ES6标准:

使用Object.keys(obj)获取包含所有自身可枚举属性键名的数组。


var person = { name: '老张' }
var props = Object.keys(person)

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章