javaScript Object.hasOwn()的用法

本文详细介绍了JavaScript中Object.hasOwn()方法的用法、返回值和与hasOwnProperty()的差异,特别强调了其在检测对象直接属性和避免原型链影响方面的优势。
摘要由CSDN通过智能技术生成

Object.hasOwn()
如果指定的对象自身有指定的属性,则静态方法 Object.hasOwn() 返回 true。如果属性是继承的或者不存在,该方法返回 false。
备注: Object.hasOwn() 旨在取代 Object.prototype.hasOwnProperty()。
**语法:**Object.hasOwn(obj, prop)
参数说明:
obj - 要测试的 JavaScript 实例对象。
prop - 要测试属性的 String 类型的名称或者 Symbol。
返回值: 如果指定的对象自身有指定的属性,则返回 true;否则返回 false。
描述: 如果指定的属性是该对象的直接属性——Object.hasOwn() 方法返回 true,即使属性值是 null 或 undefined。如果属性是继承的或者不存在,该方法返回 false。它不像 in 运算符,这个方法不检查对象的原型链中的指定属性。

例子一:

  let obj1 = {
    name:"光头强"
  }
  let result1 = Object.hasOwn(obj1,"name")
  let result2 = Object.hasOwn(obj1,"age")
  console.log(result1)  // 打印结果: true
  console.log(result2)  // 打印结果: false

例子二:

const example = {};
Object.hasOwn(example, "prop"); // false——目标对象的属性 'prop' 未被定义

example.prop = "exists";
Object.hasOwn(example, "prop"); // true——目标对象的属性 'prop' 已被定义

example.prop = null;
Object.hasOwn(example, "prop"); // true——目标对象本身的属性存在,值为 null

example.prop = undefined;
Object.hasOwn(example, "prop"); // true——目标对象本身的属性存在,值为 undefined

也可以检查数组索引是否存在
例子三:

const fruits = ["光头强", "熊大", "熊二", "吉吉国王"];
Object.hasOwn(fruits, 3); // true ('吉吉国王')
Object.hasOwn(fruits, 4); // false——没有定义的

注意:官方说明
建议使用此方法替代 Object.prototype.hasOwnProperty(),因为它适用于使用 Object.create(null) 创建的对象,以及重写了继承的 hasOwnProperty() 方法的对象。尽管可以通过在外部对象上调用 Object.prototype.hasOwnProperty() 解决这些问题,但是 Object.hasOwn() 更加直观。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值