
Javascript 入門:Object.keys() vs Object.getOwnPropertyNames()
一般情況用 Object.keys 就可以滿足到返回自定義 property names,但有時你想得到所有 inherited 嘅 property 比如 Array.prototype.length 又或者 object 本身有 define 咗 non-enumerable property,Object.keys 就滿足唔到。 const 公務員加薪 = { 加幅: 0.025 }; Object.keys(公務員加薪); // ['加幅'] Object.getOwnPropertyNames(公務員加薪); // ['加幅'] // Array const 公務員團體 = ['失望', '驚訝', '要求追回通脹']; Object.keys(公務員團體); // ['0', '1', '2'] Object.getOwnPropertyNames(公務員團體); // ['0', '1', '2', 'length'] // Non-enumerable property Object.defineProperties(公務員加薪, { 林志偉: { enumerable: false, value: '要見特首', }, }); Object.keys(公務員加薪); // ['加幅'] Object.getOwnPropertyNames(公務員加薪); // ['加幅', '林志偉']