当对象包含 Symbol 属性时呀,像 Object.keys() 和 Object.getOwnPropertyNames() 这两个方法就存在一定的局限性啦。因为 Object.keys() 它只返回对象自身可枚举的自有属性的键组成的数组,本身就不包含 Symbol 属性相关的内容呢;而 Object.getOwnPropertyNames() 虽然会返回对象除了 Symbol 属性外的所有自有属性键组成的数组,也就是它也没法把 Symbol 属性考虑进去统计对象长度哦。这时候呢,就需要用到 Object.getOwnPropertySymbols() 这个方法啦。它的作用就是返回一个包含对象所有 Symbol 类型自有属性名的数组哦。那我们如果要获取包含 Symbol 属性在内的对象的完整长度,就可以先通过 Object.getOwnPropertyNames() 获取普通自有属性键组成的数组,再通过 Object.getOwnPropertySymbols() 获取 Symbol 属性名组成的数组,然后把这两个数组的长度相加,就能得到这个对象完整的属性个数,也就是对象的长度啦。在这个例子中呀,对象 symbolObj 既有普通的自有属性 normalProp ,又有 Symbol 类型的属性 sym1 和 sym2 。通过 Object.getOwnPropertyNames(symbolObj) 得到普通属性键数组长度为 1,通过 Object.getOwnPropertySymbols(symbolObj) 得到 Symbol 属性名数组长度为 2,两者相加得到总长度为 3,这样就准确获取到了包含特殊 Symbol 属性的这个对象的完整长度啦。所以呀,大家在遇到对象有 Symbol 属性这种特殊情况时,可别忘了用 Object.getOwnPropertySymbols() 这个方法来准确获取对象长度哦。