JS `Object.hasOwn()` (ES2022):安全的属性检查替代 `hasOwnProperty`

各位好,今天咱们来聊聊 JavaScript 里一个挺重要,但有时候又容易被忽略的小家伙——Object.hasOwn()。 在 JavaScript 的世界里,判断一个对象是否拥有某个属性,就像在茫茫人海中寻找你的真命天子/天女一样,有时候挺让人头疼。之前,我们常用的工具是 hasOwnProperty,但这家伙有时候也会耍点小脾气。自从 ES2022 引入了 Object.hasOwn(),咱们就有了更可靠的 "寻人神器"。 一、hasOwnProperty:曾经的宠儿,如今的烦恼 hasOwnProperty 方法是 Object.prototype 上的一个方法,用于检测一个对象是否直接拥有某个属性,而不是从原型链上继承来的。 举个例子: const myObject = { name: ‘张三’, age: 30 }; console.log(myObject.hasOwnProperty(‘name’)); // true console.log(myObject.hasOwnProperty(‘toString’)); // false (继承自 Ob …

JS `Object.hasOwn` (ES2022):更安全的属性检查替代 `hasOwnProperty`

嗨,大家好!今天咱们聊聊 JavaScript 里的小秘密:Object.hasOwn()。 大家好啊!今天咱不聊那些高大上的框架和架构,来点实在的,聊聊 JavaScript 里一个非常实用,但可能被不少人忽略的小家伙:Object.hasOwn()。 这玩意儿是 ES2022 引入的,专门用来解决属性检查问题的。 你可能会想:“属性检查? hasOwnProperty 不挺好用的吗?” 别急,听我慢慢道来,保证让你对 Object.hasOwn() 刮目相看。 为什么需要 Object.hasOwn()? 首先,咱们得搞清楚,hasOwnProperty 到底有什么问题,才需要一个新的 API 来替代它。 hasOwnProperty 方法是用来判断一个对象是否直接拥有某个属性(即,该属性不是从原型链上继承来的)。 听起来很完美,对吧? 但问题就出在 JavaScript 的灵活性上。 这种灵活性有时候会让你搬起石头砸自己的脚。 问题一:hasOwnProperty 可能会被覆盖 在 JavaScript 里,一切皆对象,包括函数。 hasOwnProperty 本身也是一个函数, …