当前位置: 首页 > news >正文

三五互联网站密山网站

三五互联网站,密山网站,wordpress google 慢,为什么网站开发要用架构什么是 hasOwnProperty? hasOwnProperty() 是 JavaScript 中所有对象(通过 Object.prototype)都拥有的一个方法。它用于检查一个对象自身是否具有指定的属性(而不是从原型链继承而来的)。 语法: object.has…

什么是 hasOwnProperty

hasOwnProperty() 是 JavaScript 中所有对象(通过 Object.prototype)都拥有的一个方法。它用于检查一个对象自身是否具有指定的属性(而不是从原型链继承而来的)。

语法:

object.hasOwnProperty(propertyName)
  • propertyName:一个字符串,表示要检查的属性名称(也可以是 Symbol)。
  • 返回值:一个布尔值(Boolean)。
    • true:如果对象自身有该属性。
    • false:如果对象自身没有该属性(或者该属性存在于原型链上)。

为什么需要它? (与 in 操作符的区别)

理解 hasOwnProperty 的关键是明白它与 for...in 循环或 in 操作符的区别。

  • in 操作符:检查一个属性是否在对象或其原型链上。
  • hasOwnProperty检查属性是否在对象自身上。

看一个例子就明白了:

// 创建一个对象
const person = {name: 'Alice',age: 30
};// 1. 检查自身属性 - 返回 true
console.log(person.hasOwnProperty('name')); // true
console.log(person.hasOwnProperty('age'));  // true// 2. 检查不存在的属性 - 返回 false
console.log(person.hasOwnProperty('toString')); // false
// 为什么是 false?因为 toString 是从 Object.prototype 继承来的,不是 person 对象自身的属性。// 3. 使用 'in' 操作符对比
console.log('toString' in person); // true
// 'in' 操作符会沿着原型链查找,找到了 toString 方法,所以返回 true。// 4. 检查原型链上的属性
const student = {major: 'Computer Science'
};// 让 student 继承 person 的属性
Object.setPrototypeOf(student, person);console.log(student.hasOwnProperty('major')); // true (自身属性)
console.log(student.hasOwnProperty('name'));  // false (继承自 person)
console.log('name' in student);               // true (in 操作符找到了它)

主要用途

  1. 在遍历对象属性时过滤掉继承属性
    这是它最常见的用途,尤其是在使用 for...in 循环时。for...in 会遍历对象自身的以及原型链上所有可枚举的属性。使用 hasOwnProperty 可以确保只处理对象自身的属性。

    const obj = { a: 1, b: 2 };// 假设 obj 的原型上有一个方法
    Object.prototype.c = function() {};for (let key in obj) {console.log(key); // 会输出 'a', 'b', 'c'
    }for (let key in obj) {if (obj.hasOwnProperty(key)) { // 使用 hasOwnProperty 过滤console.log(key); // 只输出 'a', 'b'}
    }
    
  2. 安全地检查属性是否存在
    当你需要百分百确定一个属性是对象自己定义的,而不是意外从其他地方继承来的时,就应该使用 hasOwnProperty


注意事项和现代用法

  1. 边缘情况:如果一个对象巧合地有一个自己的属性就叫 hasOwnProperty,或者通过 Object.create(null) 创建的对象没有原型,因此也没有 hasOwnProperty 方法,直接调用 obj.hasOwnProperty(...) 可能会失败。

    更安全的现代方法
    推荐使用 Object.hasOwn()(ES2022 引入),它解决了上述问题,语法更简洁。

    const obj = Object.create(null); // 一个没有原型的对象
    obj.name = 'Test';// 传统方法会报错
    // obj.hasOwnProperty('name'); // TypeError: obj.hasOwnProperty is not a function// 现代安全的方法
    console.log(Object.hasOwn(obj, 'name')); // true
    

    或者,也可以调用 Object.prototype 上的方法:

    console.log(Object.prototype.hasOwnProperty.call(obj, 'name')); // true
    

总结

特性hasOwnPropertyin 操作符
检查范围仅对象自身对象自身 + 原型链
继承属性falsetrue
自身属性truetrue
不存在属性falsefalse

简单来说:当你只关心对象“自己拥有”的属性时,就使用 hasOwnProperty(或其现代替代方案 Object.hasOwn)。

http://www.dtcms.com/a/502614.html

相关文章:

  • 给别人做网站赚钱吗给网站人做网站
  • 怎么注册网站农商1号的网站建设费
  • 长治企业网站建设价格西安微网站开发
  • 杰奇怎么做网站地图北京昨晚出什么大事
  • 做宠物网站心得制作一个网站多少钱啊
  • asp.net mvc6电商网站开发实践百度业务员联系电话
  • 网站群建设的目的安徽网站建设服务平台
  • 校园网站建设培训简讯平谷微网站建设
  • 深圳市住房和建设局网站下载霞浦网站建设
  • 青岛网站建设公司报价广告公司的组织架构图
  • 北京天仪建设工程质量检测所网站网站建设 开票
  • 丰台网站制作口碑好的宜昌网站建设
  • 网站开发毕业设计代做做网站注册哪类商标
  • 北京网站建设品牌世界500强企业招聘网站
  • 网站建设到上线的步骤过程工作号做文案素材的网站
  • 网站开发工程是待遇有经验的邯郸网站建设
  • 公司网站如何宣传推广代发关键词包收录
  • 建设视频网站微趋道小程序免费注册
  • 基于营销导向的企业网站建设网站排名下降
  • 上海门户网站开发分类导航wordpress
  • 学做的网站基础蛋糕163企业邮箱官网
  • 网络教学网站建设互联网外包公司有哪些
  • 单位建设网站需要的材料手机网站如何做优化
  • 洋县建设银行网站百度首页排名优化价格
  • 狠狠做网站 百度一下网页设计制作作品
  • 广州英文网站制作那个网站可以兼职做效果图
  • 网站建设中色无极报价网站
  • 网站建设的网络技术昆明360网站制作
  • 资源网站建设wordpress 获取当前用户id
  • 前端怎么接私活做网站职业生涯规划书模板