1
Amy 原创整理|资料核验:2026-10-30
MDN说明,Object.hasOwn(obj, key)检查对象自身是否定义该属性。即使值是null或undefined,只要这个自有属性存在,就返回true;从原型链继承来的属性不会被算进去。
教学示例:对const settings = {theme: undefined},Object.hasOwn(settings, 'theme')为true,而settings.theme !== undefined为false。前者问“有没有这个键”,后者问“当前值是不是undefined”,两者不是同一个检查。
Amy建议处理配置覆盖时先确定语义:未提供某个选项,和明确提供了一个空值,是否应该产生不同结果?确认这一点后再选择判断方法。需要检查继承属性时,也不能把hasOwn与in运算符视为完全等价。
官方来源:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn