1️⃣for…in 循环最常用constjson{name:张三,age:25,city:北京};for(letkeyinjson){console.log(key);// name, age, cityconsole.log(json[key]);// 张三, 25, 北京}2️⃣Object.keys()推荐 ✅Object.keys(json).forEach(key{console.log(key,json[key]);});// 或Object.keys(json).map(key{console.log(key);});3️⃣Object.entries()同时获取 key 和 valuefor(let[key,value]ofObject.entries(json)){console.log(${key}:${value});}4️⃣Object.getOwnPropertyNames()包括不可枚举属性Object.getOwnPropertyNames(json).forEach(key{console.log(key);});递归遍历嵌套 JSONfunctiontraverseKeys(obj,prefix){for(letkeyinobj){constfullKeyprefix?${prefix}.${key}:key;console.log(fullKey);if(typeofobj[key]objectobj[key]!null){traverseKeys(obj[key],fullKey);// 递归}}}constnestedJson{user:{name:张三,address:{city:北京,street:长安街}}};traverseKeys(nestedJson);// 输出: user// user.name// user.address// user.address.city// user.address.street 方法对比方法遍历原型链包含 Symbol推荐场景for...in✅❌简单遍历Object.keys()❌❌日常推荐Object.entries()❌❌需要 keyvaluegetOwnPropertyNames()❌✅完整属性 推荐使用Object.keys()或Object.entries()更安全且语义清晰